From fd133aae8a771341228c702357121aad27e29517 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Mon, 23 Jul 2018 22:02:28 +0200 Subject: [PATCH] Fix #4039: Add sprite font glyph for German opening quotes (#7811) --- distribution/changelog.txt | 1 + resources/g2/font/german-openquotes-bold.png | Bin 0 -> 885 bytes resources/g2/font/german-openquotes-small.png | Bin 0 -> 883 bytes resources/g2/font/german-openquotes-tiny.png | Bin 0 -> 873 bytes resources/g2/sprites.json | 18 ++++++++++++++++++ src/openrct2/drawing/Font.cpp | 17 ++++++++++++++++- src/openrct2/localisation/FormatCodes.cpp | 1 + src/openrct2/localisation/FormatCodes.h | 4 ++++ src/openrct2/sprites.h | 4 +++- 9 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 resources/g2/font/german-openquotes-bold.png create mode 100644 resources/g2/font/german-openquotes-small.png create mode 100644 resources/g2/font/german-openquotes-tiny.png diff --git a/distribution/changelog.txt b/distribution/changelog.txt index fa7a811145..c60ba6feaf 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -6,6 +6,7 @@ - Feature: [#7771] Danish translation. - Feature: [#7802] Add sprite font glyphs for Russian. - Fix: [#3177] Wrong keys displayed in shortcut menu. +- Fix: [#4039] Add sprite font glyph for German opening quotation mark. - Fix: [#7533] Screenshot is incorrectly named/file is not generated in CJK language. - Fix: [#7628] Always-researched items can be modified in the inventory list. - Fix: [#7643] No Money scenarios with funding set to zero. diff --git a/resources/g2/font/german-openquotes-bold.png b/resources/g2/font/german-openquotes-bold.png new file mode 100644 index 0000000000000000000000000000000000000000..51fe2cb67721205754e603e9350f41c2640c1a8b GIT binary patch literal 885 zcmaJ=v5Ta36n=LH>vEgJz!c_UAz|PwEG#T6EZmEGXBNYHoCgLhTq0x&3kw4hEDW*m z4hxGZ%rV6j76TD7#TFJ876yi62o_UJK*$6JVsV9q#S~lo;{5}8eD8hVYu;D9_ujp_ zk)J&N@-YBBx&G$r^~mRAo}E7$>xY*80PqN2ef#Fc*#1ut)9IAsSV zLerTb+^OnjHrofm$K?`L70FGeBEhPZVA8U~=mBRXg1eByT$z_zwl#}(M)4#oPX&!p zEZ%S=CsL!Oxh$Nb3F>yT~TrHPPQ5<%=zV8u` z4$vvat#GL%wJkF{NYT;AIkX zW;lpoDwwO`fk`Dcv+%_{(#pkblLz~1(e3MD_=rRR9l!-h0CIp0z!3v9LY0v3qC7+G zUZug|U@k%-L#qPP067GTIh3iWu+cU`Z3dqf&x0a?u41-D1RgU_MDa08e2uiyI4?Sg=x(>8kPJh!ZOiu^jtzM>6}epEDuvytOs7wg zNuhv73l0?`YLxNv|2+Kj+ei<7e0`(A<-dRZFgDZctLJad-&?o0-#`57?Cjagm!Ci6 pE`NUd?2pe@Prvx}{qwgE;Or;3{F}b}?$h&Jzqq;j{p;Ib{sWU&aK8Wm literal 0 HcmV?d00001 diff --git a/resources/g2/font/german-openquotes-small.png b/resources/g2/font/german-openquotes-small.png new file mode 100644 index 0000000000000000000000000000000000000000..4859f1518f478e106e3d9e3239c9fe537ec8bf45 GIT binary patch literal 883 zcmaJ=v5Ta36n@E(b-CrRn8G6#<`B-p!otFU1TS&#%;K>g=YfTV%L$oc0u~-jVIiCl z2^JPpcwveugbYMDi!CfHrWC5Uxw?O;`e@7I%IOQMcLgN5#5glZZ<1F$g6!Ev7? zV}?mZ@mA9|)9K##Kdn}%sz`o9O9ZD;qQxiDDURDJ77cLW?@9 z+JfoGPN;<|YgIT!DGr+g-bBeftUj20TW}wicoUKtR$x~qJx|EagA;@c47P=wp6Ze<}eU+S=3>|BHA~3AM3sXs+>w09{%lSNyqH48jisG=_^?i?k zbbv`PevQi|sc+foK@N{*+Re*8-VJ$ow?Cl^7RLpGP$*hwIa?H6RST_gn3qS3%{p)E zW;jS-shF$dzD30|cIio3sF%y>CiC~zvfJ0g@Ciu(27n6?17rXjfFlNIgeD`;MOlj4 zy~cpU!$N{WfmQ>g19Auy@hH_$F+W;V>rQ?k7)4rt#q6A&m&;c!!;W;*Xp)!3h<3%|@3O`UaZ zjfR7us;B_e0zxo)jbP%C47^bY%VfmzcyzbhQOKsL&t|sgIXo8#Tq5zA%vUP6)7Z|S zkwqb&K}#ML5^B`(@;@H_{$r#s-n_il;mN;${WLa@t}efSb^e=ubMyMkM`w?pJ^SYM nFS{pa{Nx?}`@@ItKAgi>|G;`d^6uS&3who{QUY_ ze){Cu699O6_0{Fg#E+)@`0>N3e)sRA?*Sgd>#yIuoZ9~hVm_a994kqprYV+Xc%B=E zVUld}yr}C#+YaN%u^ta=eAGfn{PokbhqlxZggz7nf3SeTGi{k-F z#x$J@!kwz_Z2K4l?>8G%RU|i?iv+7uf=SCRqX(Q73*K4^Gi6n3>E0|_o8n1Uo(meI zSiIp%?owTD%uV4IO;ES1rr&nw3KwCf0bv8>107@hhLCgGs6@BXqs~i*xJGv>GqZSd zAv2LKY%Qtuv?jEUiFeAvp-Rq8hE6p;<7r0ccw3Yfnig5sda=l(sM>6rqUa8XVHgmQ zF3<_aZE>k2wLN2Z((+`a{h}P=!^lXMJ0v zvEvm56@Xem2qv!ybi5=(e-ivUnXo>cy#0O>l3{3$WBIArLYH;>Ge4> zDHPCX&7nd>jWS*SpWWZTO!VM~n`;fe_~);;Q$t)`e);C{JL~rLqZgk%fA##;+t2^_ c{nMY|!3})&+qd5wKRnFU%j?TuU)=uqAJubhe*gdg literal 0 HcmV?d00001 diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json index 749aff1de3..601e0201f7 100644 --- a/resources/g2/sprites.json +++ b/resources/g2/sprites.json @@ -692,6 +692,12 @@ "palette": "keep", "forceBmp": true }, + { + "path": "font/german-openquotes-small.png", + "y_offset": 6, + "palette": "keep", + "forceBmp": true + }, { "path": "font/ae-uc-bold.png", "y_offset": 0, @@ -945,6 +951,12 @@ "palette": "keep", "forceBmp": true }, + { + "path": "font/german-openquotes-bold.png", + "y_offset": 5, + "palette": "keep", + "forceBmp": true + }, { "path": "font/ae-uc-tiny.png", "y_offset": 0, @@ -1205,5 +1217,11 @@ "y_offset": 1, "palette": "keep", "forceBmp": true + }, + { + "path": "font/german-openquotes-tiny.png", + "y_offset": 4, + "palette": "keep", + "forceBmp": true } ] diff --git a/src/openrct2/drawing/Font.cpp b/src/openrct2/drawing/Font.cpp index a4861ae355..3279e020e4 100644 --- a/src/openrct2/drawing/Font.cpp +++ b/src/openrct2/drawing/Font.cpp @@ -317,12 +317,22 @@ int32_t font_sprite_get_codepoint_offset(int32_t codepoint) case UNICODE_CYRILLIC_YA: return SPR_G2_CYRILLIC_YA_LOWER - SPR_CHAR_START; - // Looks just like Ë. + // Looks just like Ë. case UNICODE_CYRILLIC_IO_UC: return 171; case UNICODE_CYRILLIC_IO: return 203; + case FORMAT_GERMAN_OPENQUOTES: + return SPR_G2_GERMAN_OPENQUOTES - SPR_CHAR_START; + + case FORMAT_SINGLE_OPENQUOTE: + return 64; + case FORMAT_SINGLE_ENDQUOTE: + return 7; + case FORMAT_GERMAN_SINGLE_OPENQUOTE: + return 12; + default: if (codepoint < 32 || codepoint >= 256) codepoint = '?'; @@ -478,6 +488,11 @@ bool font_supports_string_sprite(const utf8* text) case UNICODE_CYRILLIC_IO_UC: case UNICODE_CYRILLIC_IO: + case FORMAT_GERMAN_OPENQUOTES: + case FORMAT_SINGLE_OPENQUOTE: + case FORMAT_SINGLE_ENDQUOTE: + case FORMAT_GERMAN_SINGLE_OPENQUOTE: + supported = true; break; default: diff --git a/src/openrct2/localisation/FormatCodes.cpp b/src/openrct2/localisation/FormatCodes.cpp index 5423ca06f7..9a89667330 100644 --- a/src/openrct2/localisation/FormatCodes.cpp +++ b/src/openrct2/localisation/FormatCodes.cpp @@ -133,6 +133,7 @@ bool utf8_should_use_sprite_for_codepoint(int32_t codepoint) case FORMAT_LEFT: case FORMAT_OPENQUOTES: case FORMAT_ENDQUOTES: + case FORMAT_GERMAN_OPENQUOTES: case UNICODE_DINGBATS_PLUS: case UNICODE_DINGBATS_MINUS: return true; diff --git a/src/openrct2/localisation/FormatCodes.h b/src/openrct2/localisation/FormatCodes.h index 248572dee8..5443702f96 100644 --- a/src/openrct2/localisation/FormatCodes.h +++ b/src/openrct2/localisation/FormatCodes.h @@ -105,8 +105,12 @@ enum FORMAT_RIGHTGUILLEMET = 187, FORMAT_INVERTEDQUESTION = 191, + FORMAT_SINGLE_OPENQUOTE = 8216, + FORMAT_SINGLE_ENDQUOTE = 8217, + FORMAT_GERMAN_SINGLE_OPENQUOTE = 8218, FORMAT_OPENQUOTES = 8220, FORMAT_ENDQUOTES = 8221, + FORMAT_GERMAN_OPENQUOTES = 8222, FORMAT_BULLET = 8226, FORMAT_POWERNEGATIVEONE = 8315, diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index c5077fe80b..bd791b9737 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -894,7 +894,9 @@ enum SPR_G2_CYRILLIC_YU_LOWER = SPR_G2_CHAR_BEGIN + 47, SPR_G2_CYRILLIC_YA_LOWER = SPR_G2_CHAR_BEGIN + 48, - SPR_G2_CHAR_END = SPR_G2_CYRILLIC_YA_LOWER, + SPR_G2_GERMAN_OPENQUOTES = SPR_G2_CHAR_BEGIN + 49, + + SPR_G2_CHAR_END = SPR_G2_GERMAN_OPENQUOTES, SPR_G2_GLYPH_COUNT = (SPR_G2_CHAR_END - SPR_G2_CHAR_BEGIN) + 1, // 0x60000, chosen because it's a round hex number