Major and great font update : added support for scalable fonts (better not wait for them to implement it), and added a second more colourful font for titles

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/irrlicht@4240 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2009-12-05 23:15:15 +00:00
parent e46251008a
commit d9f6abd511
25 changed files with 1789 additions and 29 deletions

View File

@ -11,6 +11,8 @@ Logo and Logo_slim : under CC-BY-SA 3.0+ by 'rastapax'
difficulty_*.png icons, released under Creative-Commons BY-SA 3, By Conso (Constantin Pelikan)
Okolaks font by Gluk, released under Open Font License
====

View File

@ -2,7 +2,7 @@
<div x="5%" y="2%" width="90%" height="96%" layout="vertical-row" >
<label I18N="Title for challenges screen" text="Challenges : Trophy Room" text_align="center" width="100%" />
<header I18N="Title for challenges screen" text="Challenges : Trophy Room" text_align="center" width="100%" />
<box id="animated_area" width="100%" proportion="1" layout="vertical-row">

View File

@ -4,7 +4,7 @@
<icon id="logo" align="center" proportion="4" width="100%" icon="gui/logo_slim.png"/>
<label I18N="Title in credits screen" text="Credits" width="100%" />
<header I18N="Title in credits screen" text="Credits" width="100%" />
<box id="animated_area" width="100%" proportion="10">

View File

@ -2,7 +2,7 @@
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
<label align="center" text="SuperTuxKart Help"/>
<header align="center" text="SuperTuxKart Help"/>
<spacer height="15" width="10"/>
<tabs id="category" height="10%" max_height="110" width="100%" align="center">

View File

@ -2,7 +2,7 @@
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
<label align="center" text="SuperTuxKart Help"/>
<header align="center" text="SuperTuxKart Help"/>
<spacer height="15" width="10"/>
<tabs id="category" height="10%" max_height="110" width="100%" align="center">

View File

@ -2,7 +2,7 @@
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
<label align="center" text="SuperTuxKart Help"/>
<header align="center" text="SuperTuxKart Help"/>
<spacer height="15" width="10"/>
<tabs id="category" height="10%" max_height="110" width="100%" align="center">

View File

@ -2,9 +2,14 @@
<div x="2%" y="1%" width="96%" height="99%" layout="vertical-row" >
<header width="100%"
I18N="In the kart selection (player setup) screen"
text="Choose a Kart"
align="center" text_align="center" />
<label width="100%" height="25"
I18N="In the kart selection (player setup) screen"
text="Choose a Kart (more players can join by pressing 'fire' now)"
text="(more players can join by pressing 'fire' now)"
align="center" text_align="center" />
<placeholder id="playerskarts" width="100%" proportion="4">

View File

@ -2,7 +2,7 @@
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
<label align="center" text="SuperTuxKart Options"/>
<header align="center" text="SuperTuxKart Options"/>
<spacer height="15" width="10"/>
<tabs id="options_choice" height="10%" max_height="110" width="100%" align="center">

View File

@ -2,7 +2,7 @@
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
<label align="center" text="SuperTuxKart Options"/>
<header align="center" text="SuperTuxKart Options"/>
<spacer height="15" width="10"/>
<tabs id="options_choice" height="10%" max_height="110" width="100%" align="center">

View File

@ -2,7 +2,7 @@
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" >
<label align="center" text="SuperTuxKart Options"/>
<header align="center" text="SuperTuxKart Options"/>
<spacer height="15" width="10"/>
<tabs id="options_choice" height="10%" max_height="110" width="100%" align="center">

View File

@ -2,7 +2,7 @@
<div x="5%" y="5%" width="90%" height="90%" layout="vertical-row" >
<label width="100%" height="25" text="Race Setup" align="center" text_align="center" />
<header width="100%" height="25" text="Race Setup" align="center" text_align="center" />
<spacer proportion="1" width="25"/>

BIN
data/gui/title_font.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

968
data/gui/title_font.xml Normal file
View File

@ -0,0 +1,968 @@
<?xml version="1.0"?>
<font type="bitmap">
<Texture index="0" filename="title_font.png" hasAlpha="true" />
<!--
<c c="" r="0, 0, 1, 33" o="11" />
<c c="" r="2, 0, 3, 33" o="11" />
<c c="" r="4, 0, 5, 33" o="11" />
<c c="" r="6, 0, 7, 33" o="11" />
<c c="" r="8, 0, 9, 33" o="11" />
<c c="" r="10, 0, 11, 33" o="11" />
<c c="" r="12, 0, 13, 33" o="11" />
<c c="" r="14, 0, 15, 33" o="11" />
<c c="" r="16, 0, 17, 33" o="11" />
<c c=" " r="18, 0, 19, 33" o="11" />
<c c="
" r="20, 0, 21, 33" o="11" />
<c c=" " r="22, 0, 23, 33" o="11" />
<c c=" " r="24, 0, 25, 33" o="11" />
<c c=" " r="26, 0, 27, 33" o="11" />
<c c="" r="28, 0, 29, 33" o="11" />
<c c="" r="30, 0, 31, 33" o="11" />
<c c="" r="32, 0, 33, 33" o="11" />
<c c="" r="34, 0, 35, 33" o="11" />
<c c="" r="36, 0, 37, 33" o="11" />
<c c="" r="38, 0, 39, 33" o="11" />
<c c="" r="40, 0, 41, 33" o="11" />
<c c="" r="42, 0, 43, 33" o="11" />
<c c="" r="44, 0, 45, 33" o="11" />
<c c="" r="46, 0, 47, 33" o="11" />
<c c="" r="48, 0, 49, 33" o="11" />
<c c="" r="50, 0, 51, 33" o="21" />
<c c="" r="52, 0, 53, 33" o="11" />
<c c="" r="54, 0, 55, 33" o="11" />
<c c="" r="56, 0, 57, 33" o="11" />
<c c="" r="58, 0, 59, 33" o="11" />
<c c="" r="60, 0, 61, 33" o="11" />
<c c="" r="62, 0, 63, 33" o="21" />
<c c=" " r="64, 0, 65, 33" o="13" />
<c c="!" r="66, 0, 69, 33" u="1" o="1" />
<c c="&quot;" r="70, 0, 77, 33" u="1" o="1" />
<c c="#" r="78, 0, 92, 33" u="1" o="1" />
<c c="$" r="93, 0, 106, 33" u="1" o="1" />
<c c="%" r="107, 0, 125, 33" o="1" />
<c c="&amp;" r="126, 0, 139, 33" u="1" o="1" />
<c c="'" r="140, 0, 143, 33" u="1" o="1" />
<c c="(" r="144, 0, 150, 33" u="1" o="1" />
<c c=")" r="151, 0, 157, 33" u="1" o="1" />
<c c="*" r="158, 0, 164, 33" o="1" />
<c c="+" r="165, 0, 177, 33" u="1" o="1" />
<c c="," r="178, 0, 183, 33" o="1" />
<c c="-" r="184, 0, 198, 33" o="1" />
<c c="." r="199, 0, 202, 33" u="1" o="1" />
<c c="/" r="203, 0, 215, 33" u="1" o="1" />
<c c="0" r="216, 0, 229, 33" u="1" o="1" />
<c c="1" r="230, 0, 236, 33" o="1" />
<c c="2" r="237, 0, 252, 33" o="1" />
<c c="3" r="253, 0, 266, 33" u="1" o="1" />
<c c="4" r="267, 0, 280, 33" u="1" o="1" />
<c c="5" r="281, 0, 294, 33" u="1" o="1" />
<c c="6" r="295, 0, 308, 33" u="1" o="1" />
<c c="7" r="309, 0, 322, 33" u="1" o="1" />
<c c="8" r="323, 0, 337, 33" u="1" o="2" />
<c c="9" r="338, 0, 351, 33" u="1" o="1" />
<c c=":" r="352, 0, 355, 33" u="1" o="1" />
<c c=";" r="356, 0, 361, 33" o="1" />
<c c="&lt;" r="362, 0, 369, 33" o="3" />
<c c="=" r="370, 0, 384, 33" o="1" />
<c c="&gt;" r="385, 0, 392, 33" o="3" />
<c c="?" r="393, 0, 405, 33" u="1" o="1" />
<c c="@" r="406, 0, 430, 33" o="1" />
-->
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c=" " r="101, 501, 200, 600" o="11" />
<c c="
" r="101, 501, 200, 600" o="11" />
<c c=" " r="101, 501, 200, 600" o="11" />
<c c=" " r="101, 501, 200, 600" o="11" />
<c c=" " r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="21" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="11" />
<c c="" r="101, 501, 200, 600" o="21" />
<c c=" " r="101, 501, 200, 600" o="13" />
<c c="!" r="101, 501, 200, 600" u="1" o="1" />
<c c="&quot;" r="101, 501, 200, 600" u="1" o="1" />
<c c="#" r="101, 501, 200, 600" u="1" o="1" />
<c c="$" r="101, 501, 200, 600" u="1" o="1" />
<c c="%" r="101, 501, 200, 600" o="1" />
<c c="&amp;"r="101, 501, 200, 600" u="1" o="1" />
<c c="'" r="101, 501, 200, 600" u="1" o="1" />
<c c="(" r="101, 501, 200, 600" u="1" o="1" />
<c c=")" r="101, 501, 200, 600" u="1" o="1" />
<c c="*" r="101, 501, 200, 600" o="1" />
<c c="+" r="101, 501, 200, 600" u="1" o="1" />
<c c="," r="101, 501, 200, 600" o="1" />
<c c="-" r="101, 501, 200, 600" o="1" />
<c c="." r="101, 501, 200, 600" u="1" o="1" />
<c c="/" r="101, 501, 200, 600" u="1" o="1" />
<c c="0" r="101, 501, 200, 600" u="1" o="1" />
<c c="1" r="101, 501, 200, 600" o="1" />
<c c="2" r="101, 501, 200, 600" o="1" />
<c c="3" r="101, 501, 200, 600" u="1" o="1" />
<c c="4" r="101, 501, 200, 600" u="1" o="1" />
<c c="5" r="101, 501, 200, 600" u="1" o="1" />
<c c="6" r="101, 501, 200, 600" u="1" o="1" />
<c c="7" r="101, 501, 200, 600" u="1" o="1" />
<c c="8" r="101, 501, 200, 600" u="1" o="2" />
<c c="9" r="101, 501, 200, 600" u="1" o="1" />
<c c=":" r="101, 501, 200, 600" u="1" o="1" />
<c c=";" r="101, 501, 200, 600" o="1" />
<c c="&lt;" r="101, 501, 200, 600" o="3" />
<c c="=" r="101, 501, 200, 600" o="1" />
<c c="&gt;" r="101, 501, 200, 600" o="3" />
<c c="?" r="101, 501, 200, 600" u="1" o="1" />
<c c="@" r="101, 501, 200, 600" o="1" />
<c c="A" r="0, 0, 100, 100" u="1" o="1" />
<c c="B" r="101, 0, 200, 100" u="1" o="1" />
<c c="C" r="201, 0, 300, 100" u="1" o="1" />
<c c="D" r="301, 0, 400, 100" u="1" o="1" />
<c c="E" r="401, 0, 500, 100" u="1" o="1" />
<c c="F" r="0, 101, 100, 200" u="1" o="1" />
<c c="G" r="101, 101, 200, 200" u="1" o="1" />
<c c="H" r="201, 101, 300, 200" u="1" o="1" />
<c c="I" r="301, 101, 400, 200" u="1" o="1" />
<c c="J" r="401, 101, 500, 200" u="1" o="1" />
<c c="K" r="0, 201, 100, 300" u="1" o="1" />
<c c="L" r="101, 201, 200, 300" u="1" o="1" />
<c c="M" r="201, 201, 300, 300" u="1" o="1" />
<c c="N" r="301, 201, 400, 300" u="1" o="1" />
<c c="O" r="401, 201, 500, 300" u="1" o="1" />
<c c="P" r="0, 301, 100, 400" u="1" o="1" />
<c c="Q" r="101, 301, 200, 400" u="1" o="1" />
<c c="R" r="201, 301, 300, 400" u="1" o="1" />
<c c="S" r="301, 301, 400, 400" u="1" o="1" />
<c c="T" r="401, 301, 500, 400" u="1" o="1" />
<c c="U" r="0, 401, 100, 500" u="1" o="1" />
<c c="V" r="101, 401, 200, 500" u="1" o="1" />
<c c="W" r="201, 401, 300, 500" u="1" o="1" />
<c c="X" r="301, 401, 400, 500" u="1" o="1" />
<c c="Y" r="401, 401, 500, 500" u="1" o="1" />
<c c="Z" r="0, 501, 100, 600" u="1" o="1" />
<!--
<c c="[" r="289, 34, 293, 67" u="1" o="1" />
<c c="\" r="294, 34, 307, 67" o="1" />
<c c="]" r="308, 34, 313, 67" u="1" />
<c c="^" r="314, 34, 325, 67" u="1" o="2" />
<c c="_" r="326, 34, 342, 67" o="1" />
<c c="`" r="343, 34, 348, 67" u="1" />
-->
<c c="a" r="0, 0, 100, 100" u="1" o="1" />
<c c="b" r="101, 0, 200, 100" u="1" o="1" />
<c c="c" r="201, 0, 300, 100" u="1" o="1" />
<c c="d" r="301, 0, 400, 100" u="1" o="1" />
<c c="e" r="401, 0, 500, 100" u="1" o="1" />
<c c="f" r="0, 101, 100, 200" u="1" o="1" />
<c c="g" r="101, 101, 200, 200" u="1" o="1" />
<c c="h" r="201, 101, 300, 200" u="1" o="1" />
<c c="i" r="301, 101, 400, 200" u="1" o="1" />
<c c="j" r="401, 101, 500, 200" u="1" o="1" />
<c c="k" r="0, 201, 100, 300" u="1" o="1" />
<c c="l" r="101, 201, 200, 300" u="1" o="1" />
<c c="m" r="201, 201, 300, 300" u="1" o="1" />
<c c="n" r="301, 201, 400, 300" u="1" o="1" />
<c c="o" r="401, 201, 500, 300" u="1" o="1" />
<c c="p" r="0, 301, 100, 400" u="1" o="1" />
<c c="q" r="101, 301, 200, 400" u="1" o="1" />
<c c="r" r="201, 301, 300, 400" u="1" o="1" />
<c c="s" r="301, 301, 400, 400" u="1" o="1" />
<c c="t" r="401, 301, 500, 400" u="1" o="1" />
<c c="u" r="0, 401, 100, 500" u="1" o="1" />
<c c="v" r="101, 401, 200, 500" u="1" o="1" />
<c c="w" r="201, 401, 300, 500" u="1" o="1" />
<c c="x" r="301, 401, 400, 500" u="1" o="1" />
<c c="y" r="401, 401, 500, 500" u="1" o="1" />
<c c="z" r="0, 501, 100, 600" u="1" o="1" />
<!--
<c c="{" r="177, 68, 185, 101" u="1" />
<c c="|" r="186, 68, 189, 101" o="1" />
<c c="}" r="190, 68, 198, 101" u="1" />
<c c="~" r="199, 68, 211, 101" u="1" o="2" />
<c c="" r="212, 68, 213, 101" o="11" />
<c c="€" r="214, 68, 215, 101" o="11" />
<c c="" r="216, 68, 217, 101" o="11" />
<c c="‚" r="218, 68, 219, 101" o="11" />
<c c="ƒ" r="220, 68, 221, 101" o="11" />
<c c="„" r="222, 68, 223, 101" o="11" />
<c c="…" r="224, 68, 225, 101" o="11" />
<c c="†" r="226, 68, 227, 101" o="11" />
<c c="‡" r="228, 68, 229, 101" o="11" />
<c c="ˆ" r="230, 68, 231, 101" o="11" />
<c c="‰" r="232, 68, 233, 101" o="11" />
<c c="Š" r="234, 68, 235, 101" o="11" />
<c c="‹" r="236, 68, 237, 101" o="11" />
<c c="Œ" r="238, 68, 239, 101" o="11" />
<c c="" r="240, 68, 241, 101" o="11" />
<c c="Ž" r="242, 68, 243, 101" o="11" />
<c c="" r="244, 68, 245, 101" o="11" />
<c c="" r="246, 68, 247, 101" o="11" />
<c c="‘" r="248, 68, 249, 101" o="11" />
<c c="’" r="250, 68, 251, 101" o="11" />
<c c="“" r="252, 68, 253, 101" o="11" />
<c c="”" r="254, 68, 255, 101" o="11" />
<c c="•" r="256, 68, 257, 101" o="11" />
<c c="–" r="258, 68, 259, 101" o="11" />
<c c="—" r="260, 68, 261, 101" o="11" />
<c c="˜" r="262, 68, 263, 101" o="11" />
<c c="™" r="264, 68, 265, 101" o="11" />
<c c="š" r="266, 68, 267, 101" o="11" />
<c c="›" r="268, 68, 269, 101" o="11" />
<c c="œ" r="270, 68, 271, 101" o="11" />
<c c="¡" r="272, 68, 275, 101" u="1" o="1" />
<c c="¢" r="276, 68, 290, 101" u="1" />
<c c="£" r="291, 68, 301, 101" o="1" />
<c c="¤" r="302, 68, 311, 101" u="1" o="1" />
<c c="¥" r="312, 68, 325, 101" u="1" o="1" />
<c c="¦" r="326, 68, 329, 101" u="1" o="1" />
<c c="§" r="330, 68, 344, 101" u="1" o="1" />
<c c="¨" r="345, 68, 356, 101" u="3" o="3" />
<c c="©" r="357, 68, 377, 101" o="1" />
<c c="ª" r="378, 68, 388, 101" u="1" o="1" />
<c c="«" r="389, 68, 402, 101" o="3" />
<c c="­" r="403, 68, 404, 101" o="11" />
<c c="®" r="405, 68, 426, 101" />
<c c="¯" r="427, 68, 441, 101" u="1" o="2" />
<c c="°" r="442, 68, 448, 101" u="1" />
<c c="±" r="449, 68, 461, 101" u="1" o="1" />
<c c="²" r="462, 68, 473, 101" />
<c c="³" r="474, 68, 484, 101" u="1" />
<c c="´" r="485, 68, 490, 101" u="1" />
<c c="µ" r="491, 68, 505, 101" u="1" />
<c c="¶" r="0, 102, 11, 135" u="1" o="1" />
<c c="·" r="12, 102, 16, 135" u="1" o="1" />
<c c="¸" r="17, 102, 21, 135" u="12" o="2" />
<c c="¹" r="22, 102, 27, 135" />
<c c="º" r="28, 102, 38, 135" u="1" o="1" />
<c c="»" r="39, 102, 52, 135" o="3" />
<c c="¼" r="53, 102, 71, 135" u="1" />
<c c="½" r="72, 102, 91, 135" u="1" o="1" />
<c c="¾" r="92, 102, 114, 135" u="1" />
<c c="¿" r="115, 102, 127, 135" u="1" o="1" />
<c c="À" r="128, 102, 141, 135" u="1" o="1" />
<c c="Á" r="142, 102, 155, 135" u="1" o="1" />
<c c="Â" r="156, 102, 169, 135" u="1" o="1" />
<c c="Ã" r="170, 102, 183, 135" u="1" o="1" />
<c c="Ä" r="184, 102, 197, 135" u="1" o="1" />
<c c="Å" r="198, 102, 211, 135" u="1" o="1" />
<c c="Æ" r="212, 102, 235, 135" u="1" o="1" />
<c c="Ç" r="236, 102, 249, 135" u="1" o="1" />
<c c="È" r="250, 102, 263, 135" u="1" o="1" />
<c c="É" r="264, 102, 277, 135" u="1" o="1" />
<c c="Ê" r="278, 102, 291, 135" u="1" o="1" />
<c c="Ë" r="292, 102, 305, 135" u="1" o="1" />
<c c="Ì" r="306, 102, 310, 135" o="1" />
<c c="Í" r="311, 102, 316, 135" u="1" o="-1" />
<c c="Î" r="317, 102, 325, 135" u="-2" o="-1" />
<c c="Ï" r="326, 102, 333, 135" u="-1" o="-1" />
<c c="Ð" r="334, 102, 348, 135" o="1" />
<c c="Ñ" r="349, 102, 362, 135" u="1" o="1" />
<c c="Ò" r="363, 102, 376, 135" u="1" o="1" />
<c c="Ó" r="377, 102, 390, 135" u="1" o="1" />
<c c="Ô" r="391, 102, 404, 135" u="1" o="1" />
<c c="Õ" r="405, 102, 418, 135" u="1" o="1" />
<c c="Ö" r="419, 102, 432, 135" u="1" o="1" />
<c c="×" r="433, 102, 442, 135" u="1" o="1" />
<c c="Ø" r="443, 102, 456, 135" u="1" o="1" />
<c c="Ù" r="457, 102, 470, 135" u="1" o="1" />
<c c="Ú" r="471, 102, 484, 135" u="1" o="1" />
<c c="Û" r="485, 102, 498, 135" u="1" o="1" />
<c c="Ü" r="499, 102, 512, 135" u="1" o="1" />
<c c="Ý" r="0, 136, 13, 169" u="1" o="1" />
<c c="Þ" r="14, 136, 27, 169" u="1" o="1" />
<c c="ß" r="28, 136, 41, 169" u="1" o="1" />
<c c="à" r="42, 136, 55, 169" u="1" o="1" />
<c c="á" r="56, 136, 69, 169" u="1" o="1" />
<c c="â" r="70, 136, 83, 169" u="1" o="1" />
<c c="ã" r="84, 136, 97, 169" u="1" o="1" />
<c c="ä" r="98, 136, 111, 169" u="1" o="1" />
<c c="å" r="112, 136, 125, 169" u="1" o="1" />
<c c="æ" r="126, 136, 149, 169" u="1" o="1" />
<c c="ç" r="150, 136, 163, 169" u="1" o="1" />
<c c="è" r="164, 136, 177, 169" u="1" o="1" />
<c c="é" r="178, 136, 191, 169" u="1" o="1" />
<c c="ê" r="192, 136, 205, 169" u="1" o="1" />
<c c="ë" r="206, 136, 219, 169" u="1" o="1" />
<c c="ì" r="220, 136, 227, 169" />
<c c="í" r="228, 136, 234, 169" u="1" />
<c c="î" r="235, 136, 245, 169" o="-3" />
<c c="ï" r="246, 136, 254, 169" o="-1" />
<c c="ð" r="255, 136, 268, 169" u="1" o="1" />
<c c="ñ" r="269, 136, 282, 169" u="1" o="1" />
<c c="ò" r="283, 136, 296, 169" u="1" o="1" />
<c c="ó" r="297, 136, 310, 169" u="1" o="1" />
<c c="ô" r="311, 136, 324, 169" u="1" o="1" />
<c c="õ" r="325, 136, 338, 169" u="1" o="1" />
<c c="ö" r="339, 136, 352, 169" u="1" o="1" />
<c c="÷" r="353, 136, 367, 169" o="1" />
<c c="ø" r="368, 136, 382, 169" u="1" o="2" />
<c c="ù" r="383, 136, 396, 169" u="1" o="1" />
<c c="ú" r="397, 136, 410, 169" u="1" o="1" />
<c c="û" r="411, 136, 424, 169" u="1" o="1" />
<c c="ü" r="425, 136, 438, 169" u="1" o="1" />
<c c="ý" r="439, 136, 452, 169" u="1" o="1" />
<c c="þ" r="453, 136, 466, 169" u="1" o="1" />
<c c="ÿ" r="467, 136, 480, 169" u="1" o="1" />
<c c="Ā" r="481, 136, 495, 169" o="1" />
<c c="ā" r="496, 136, 509, 169" u="1" o="1" />
<c c="Ă" r="0, 170, 13, 203" u="1" o="1" />
<c c="ă" r="14, 170, 27, 203" u="1" o="1" />
<c c="Ą" r="28, 170, 41, 203" u="1" o="1" />
<c c="ą" r="42, 170, 55, 203" u="1" o="1" />
<c c="Ć" r="56, 170, 69, 203" u="1" o="1" />
<c c="ć" r="70, 170, 83, 203" u="1" o="1" />
<c c="Ĉ" r="84, 170, 97, 203" u="1" o="1" />
<c c="ĉ" r="98, 170, 111, 203" u="1" o="1" />
<c c="Ċ" r="112, 170, 125, 203" u="1" o="1" />
<c c="ċ" r="126, 170, 139, 203" u="1" o="1" />
<c c="Č" r="140, 170, 153, 203" u="1" o="1" />
<c c="č" r="154, 170, 167, 203" u="1" o="1" />
<c c="Ď" r="168, 170, 181, 203" u="1" o="1" />
<c c="ď" r="182, 170, 199, 203" u="1" />
<c c="Đ" r="200, 170, 214, 203" o="1" />
<c c="đ" r="215, 170, 229, 203" u="1" o="1" />
<c c="Ē" r="230, 170, 244, 203" o="1" />
<c c="ē" r="245, 170, 259, 203" o="1" />
<c c="Ĕ" r="260, 170, 273, 203" u="1" o="1" />
<c c="ĕ" r="274, 170, 287, 203" u="1" o="1" />
<c c="Ė" r="288, 170, 301, 203" u="1" o="1" />
<c c="ė" r="302, 170, 315, 203" u="1" o="1" />
<c c="Ę" r="316, 170, 329, 203" u="1" o="1" />
<c c="ę" r="330, 170, 343, 203" u="1" o="1" />
<c c="Ě" r="344, 170, 357, 203" u="1" o="1" />
<c c="ě" r="358, 170, 371, 203" u="1" o="1" />
<c c="Ĝ" r="372, 170, 385, 203" u="1" o="1" />
<c c="ĝ" r="386, 170, 399, 203" u="1" o="1" />
<c c="Ğ" r="400, 170, 413, 203" u="1" o="1" />
<c c="ğ" r="414, 170, 427, 203" u="1" o="1" />
<c c="Ġ" r="428, 170, 441, 203" u="1" o="1" />
<c c="ġ" r="442, 170, 455, 203" u="1" o="1" />
<c c="Ģ" r="456, 170, 469, 203" u="1" o="1" />
<c c="ģ" r="470, 170, 483, 203" u="1" o="1" />
<c c="Ĥ" r="484, 170, 497, 203" u="1" o="1" />
<c c="ĥ" r="498, 170, 511, 203" u="1" o="1" />
<c c="Ħ" r="0, 204, 16, 237" o="1" />
<c c="ħ" r="17, 204, 31, 237" o="1" />
<c c="Ĩ" r="32, 204, 38, 237" o="-1" />
<c c="ĩ" r="39, 204, 47, 237" o="-1" />
<c c="Ī" r="48, 204, 53, 237" />
<c c="ī" r="54, 204, 61, 237" />
<c c="Ĭ" r="62, 204, 69, 237" u="-1" o="-1" />
<c c="ĭ" r="70, 204, 79, 237" o="-2" />
<c c="Į" r="80, 204, 84, 237" o="1" />
<c c="į" r="85, 204, 92, 237" />
<c c="İ" r="93, 204, 96, 237" u="1" o="1" />
<c c="ı" r="97, 204, 103, 237" u="1" />
<c c="IJ" r="104, 204, 113, 237" u="1" o="1" />
<c c="ij" r="114, 204, 124, 237" o="1" />
<c c="Ĵ" r="125, 204, 134, 237" u="-1" o="-1" />
<c c="ĵ" r="135, 204, 143, 237" u="-1" o="-1" />
<c c="Ķ" r="144, 204, 157, 237" u="1" o="1" />
<c c="ķ" r="158, 204, 171, 237" u="1" o="1" />
<c c="ĸ" r="172, 204, 185, 237" u="1" o="1" />
<c c="Ĺ" r="186, 204, 197, 237" o="1" />
<c c="ĺ" r="198, 204, 204, 237" u="1" />
<c c="Ļ" r="205, 204, 216, 237" o="1" />
<c c="ļ" r="217, 204, 223, 237" u="1" />
<c c="Ľ" r="224, 204, 235, 237" o="1" />
<c c="ľ" r="236, 204, 244, 237" u="1" />
<c c="Ŀ" r="245, 204, 256, 237" o="1" />
<c c="ŀ" r="257, 204, 264, 237" u="1" o="-1" />
<c c="Ł" r="265, 204, 275, 237" o="1" />
<c c="ł" r="276, 204, 283, 237" />
<c c="Ń" r="284, 204, 297, 237" u="1" o="1" />
<c c="ń" r="298, 204, 311, 237" u="1" o="1" />
<c c="Ņ" r="312, 204, 325, 237" u="1" o="1" />
<c c="ņ" r="326, 204, 339, 237" u="1" o="1" />
<c c="Ň" r="340, 204, 353, 237" u="1" o="1" />
<c c="ň" r="354, 204, 367, 237" u="1" o="1" />
<c c="Ŋ" r="368, 204, 381, 237" u="1" o="1" />
<c c="ŋ" r="382, 204, 395, 237" u="1" o="1" />
<c c="Ō" r="396, 204, 410, 237" o="1" />
<c c="ō" r="411, 204, 425, 237" o="1" />
<c c="Ŏ" r="426, 204, 439, 237" u="1" o="1" />
<c c="ŏ" r="440, 204, 453, 237" u="1" o="1" />
<c c="Ő" r="454, 204, 467, 237" u="1" o="1" />
<c c="ő" r="468, 204, 481, 237" u="1" o="1" />
<c c="Œ" r="482, 204, 505, 237" u="1" o="1" />
<c c="œ" r="0, 238, 23, 271" u="1" o="1" />
<c c="Ŕ" r="24, 238, 37, 271" u="1" o="1" />
<c c="ŕ" r="38, 238, 45, 271" u="1" o="1" />
<c c="Ŗ" r="46, 238, 59, 271" u="1" o="1" />
<c c="ŗ" r="60, 238, 67, 271" u="1" o="1" />
<c c="Ř" r="68, 238, 81, 271" u="1" o="1" />
<c c="ř" r="82, 238, 92, 271" o="-1" />
<c c="Ś" r="93, 238, 106, 271" u="1" o="1" />
<c c="ś" r="107, 238, 120, 271" u="1" o="1" />
<c c="Ŝ" r="121, 238, 134, 271" u="1" o="1" />
<c c="ŝ" r="135, 238, 148, 271" u="1" o="1" />
<c c="Ş" r="149, 238, 162, 271" u="1" o="1" />
<c c="ş" r="163, 238, 176, 271" u="1" o="1" />
<c c="Š" r="177, 238, 190, 271" u="1" o="1" />
<c c="š" r="191, 238, 204, 271" u="1" o="1" />
<c c="Ţ" r="205, 238, 218, 271" u="1" o="1" />
<c c="ţ" r="219, 238, 226, 271" u="1" />
<c c="Ť" r="227, 238, 240, 271" u="1" o="1" />
<c c="ť" r="241, 238, 250, 271" u="1" o="1" />
<c c="Ŧ" r="251, 238, 265, 271" u="1" o="1" />
<c c="ŧ" r="266, 238, 274, 271" />
<c c="Ũ" r="275, 238, 288, 271" u="1" o="1" />
<c c="ũ" r="289, 238, 302, 271" u="1" o="1" />
<c c="Ū" r="303, 238, 317, 271" o="1" />
<c c="ū" r="318, 238, 332, 271" o="1" />
<c c="Ŭ" r="333, 238, 346, 271" u="1" o="1" />
<c c="ŭ" r="347, 238, 360, 271" u="1" o="1" />
<c c="Ů" r="361, 238, 374, 271" u="1" o="1" />
<c c="ů" r="375, 238, 388, 271" u="1" o="1" />
<c c="Ű" r="389, 238, 402, 271" u="1" o="1" />
<c c="ű" r="403, 238, 416, 271" u="1" o="1" />
<c c="Ų" r="417, 238, 430, 271" u="1" o="1" />
<c c="ų" r="431, 238, 444, 271" u="1" o="1" />
<c c="Ŵ" r="445, 238, 465, 271" u="1" o="1" />
<c c="ŵ" r="466, 238, 485, 271" u="1" o="1" />
<c c="Ŷ" r="486, 238, 499, 271" u="1" o="1" />
<c c="ŷ" r="0, 272, 13, 305" u="1" o="1" />
<c c="Ÿ" r="14, 272, 27, 305" u="1" o="1" />
<c c="Ź" r="28, 272, 43, 305" o="1" />
<c c="ź" r="44, 272, 58, 305" o="1" />
<c c="Ż" r="59, 272, 74, 305" o="1" />
<c c="ż" r="75, 272, 89, 305" o="1" />
<c c="Ž" r="90, 272, 105, 305" o="1" />
<c c="ž" r="106, 272, 120, 305" o="1" />
<c c="Ǎ" r="121, 272, 134, 305" u="1" o="1" />
<c c="ǎ" r="135, 272, 148, 305" u="1" o="1" />
<c c="Ǐ" r="149, 272, 158, 305" u="-2" o="-2" />
<c c="ǐ" r="159, 272, 167, 305" o="-1" />
<c c="Ǒ" r="168, 272, 181, 305" u="1" o="1" />
<c c="ǒ" r="182, 272, 195, 305" u="1" o="1" />
<c c="Ǔ" r="196, 272, 209, 305" u="1" o="1" />
<c c="ǔ" r="210, 272, 223, 305" u="1" o="1" />
<c c="Ǖ" r="224, 272, 238, 305" o="1" />
<c c="ǖ" r="239, 272, 253, 305" o="1" />
<c c="ǘ" r="254, 272, 267, 305" u="1" o="1" />
<c c="ǚ" r="268, 272, 281, 305" u="1" o="1" />
<c c="ǜ" r="282, 272, 295, 305" u="1" o="1" />
<c c="Ǟ" r="296, 272, 310, 305" o="1" />
<c c="ǟ" r="311, 272, 325, 305" o="1" />
<c c="Ǡ" r="326, 272, 341, 305" />
<c c="ǡ" r="342, 272, 357, 305" />
<c c="Ǣ" r="358, 272, 381, 305" u="1" o="1" />
<c c="ǣ" r="382, 272, 405, 305" u="1" o="1" />
<c c="Ǥ" r="406, 272, 420, 305" u="1" o="-1" />
<c c="ǥ" r="421, 272, 435, 305" u="1" o="-1" />
<c c="Ǧ" r="436, 272, 449, 305" u="1" o="1" />
<c c="ǧ" r="450, 272, 463, 305" u="1" o="1" />
<c c="Ǩ" r="464, 272, 477, 305" u="1" o="1" />
<c c="ǩ" r="478, 272, 491, 305" u="1" o="1" />
<c c="Ǫ" r="492, 272, 505, 305" u="1" o="1" />
<c c="ǫ" r="0, 306, 13, 339" u="1" o="1" />
<c c="Ǭ" r="14, 306, 28, 339" o="1" />
<c c="ǭ" r="29, 306, 43, 339" o="1" />
<c c="ǰ" r="44, 306, 52, 339" u="-1" o="-1" />
<c c="Ǵ" r="53, 306, 66, 339" u="1" o="1" />
<c c="ǵ" r="67, 306, 80, 339" u="1" o="1" />
<c c="Ǹ" r="81, 306, 94, 339" u="1" o="1" />
<c c="ǹ" r="95, 306, 108, 339" u="1" o="1" />
<c c="ǻ" r="109, 306, 122, 339" u="1" o="1" />
<c c="Ǽ" r="123, 306, 146, 339" u="1" o="1" />
<c c="ǽ" r="147, 306, 170, 339" u="1" o="1" />
<c c="Ǿ" r="171, 306, 184, 339" u="1" o="1" />
<c c="ǿ" r="185, 306, 199, 339" u="1" o="2" />
<c c="Ȁ" r="200, 306, 213, 339" u="1" o="1" />
<c c="ȁ" r="214, 306, 227, 339" u="1" o="1" />
<c c="Ȃ" r="228, 306, 241, 339" u="1" o="1" />
<c c="ȃ" r="242, 306, 255, 339" u="1" o="1" />
<c c="Ȅ" r="256, 306, 269, 339" u="1" o="1" />
<c c="ȅ" r="270, 306, 283, 339" u="1" o="1" />
<c c="Ȇ" r="284, 306, 297, 339" u="1" o="1" />
<c c="ȇ" r="298, 306, 311, 339" u="1" o="1" />
<c c="Ȉ" r="312, 306, 319, 339" u="-1" o="-1" />
<c c="ȉ" r="320, 306, 328, 339" u="-1" />
<c c="Ȋ" r="329, 306, 338, 339" u="-2" o="-2" />
<c c="ȋ" r="339, 306, 347, 339" o="-1" />
<c c="Ȍ" r="348, 306, 361, 339" u="1" o="1" />
<c c="ȍ" r="362, 306, 375, 339" u="1" o="1" />
<c c="Ȏ" r="376, 306, 389, 339" u="1" o="1" />
<c c="ȏ" r="390, 306, 403, 339" u="1" o="1" />
<c c="Ȑ" r="404, 306, 417, 339" u="1" o="1" />
<c c="ȑ" r="418, 306, 426, 339" o="1" />
<c c="Ȓ" r="427, 306, 440, 339" u="1" o="1" />
<c c="ȓ" r="441, 306, 451, 339" o="-1" />
<c c="Ȕ" r="452, 306, 465, 339" u="1" o="1" />
<c c="ȕ" r="466, 306, 479, 339" u="1" o="1" />
<c c="Ȗ" r="480, 306, 493, 339" u="1" o="1" />
<c c="ȗ" r="494, 306, 507, 339" u="1" o="1" />
<c c="Ș" r="0, 340, 13, 373" u="1" o="1" />
<c c="ș" r="14, 340, 27, 373" u="1" o="1" />
<c c="Ț" r="28, 340, 41, 373" u="1" o="1" />
<c c="ț" r="42, 340, 49, 373" u="1" />
<c c="Ȟ" r="50, 340, 63, 373" u="1" o="1" />
<c c="ȟ" r="64, 340, 77, 373" u="1" o="1" />
<c c="Ȧ" r="78, 340, 91, 373" u="1" o="1" />
<c c="ȧ" r="92, 340, 105, 373" u="1" o="1" />
<c c="Ȩ" r="106, 340, 119, 373" u="1" o="1" />
<c c="ȩ" r="120, 340, 133, 373" u="1" o="1" />
<c c="Ȫ" r="134, 340, 148, 373" o="1" />
<c c="ȫ" r="149, 340, 163, 373" o="1" />
<c c="ȭ" r="164, 340, 178, 373" o="1" />
<c c="Ȯ" r="179, 340, 192, 373" u="1" o="1" />
<c c="ȯ" r="193, 340, 206, 373" u="1" o="1" />
<c c="Ȱ" r="207, 340, 221, 373" o="1" />
<c c="ȱ" r="222, 340, 236, 373" o="1" />
<c c="Ȳ" r="237, 340, 251, 373" o="1" />
<c c="ȳ" r="252, 340, 266, 373" o="1" />
<c c="ˆ" r="267, 340, 279, 373" u="2" o="3" />
<c c="ˇ" r="280, 340, 292, 373" u="2" o="3" />
<c c="˘" r="293, 340, 305, 373" u="2" o="3" />
<c c="˙" r="306, 340, 310, 373" u="1" />
<c c="˚" r="311, 340, 317, 373" u="1" />
<c c="˛" r="318, 340, 322, 373" u="12" o="2" />
<c c="˜" r="323, 340, 335, 373" u="2" o="3" />
<c c="˝" r="336, 340, 347, 373" u="3" o="3" />
<c c="̏" r="348, 340, 359, 373" u="3" o="3" />
<c c="̑" r="360, 340, 372, 373" u="1" o="2" />
<c c="Ѐ" r="373, 340, 386, 373" u="1" o="1" />
<c c="Ё" r="387, 340, 400, 373" u="1" o="1" />
<c c="Ђ" r="401, 340, 418, 373" u="1" o="1" />
<c c="Ѓ" r="419, 340, 431, 373" u="1" o="1" />
<c c="Є" r="432, 340, 445, 373" u="1" o="1" />
<c c="Ѕ" r="446, 340, 459, 373" u="1" o="1" />
<c c="І" r="460, 340, 463, 373" u="1" o="1" />
<c c="Ї" r="464, 340, 471, 373" u="-1" o="-1" />
<c c="Ј" r="472, 340, 477, 373" u="1" o="1" />
<c c="Љ" r="478, 340, 502, 373" o="1" />
<c c="Њ" r="0, 374, 23, 407" u="1" o="1" />
<c c="Ћ" r="24, 374, 41, 407" u="1" o="1" />
<c c="Ќ" r="42, 374, 56, 407" u="1" />
<c c="Ѝ" r="57, 374, 71, 407" u="1" />
<c c="Ў" r="72, 374, 86, 407" u="1" />
<c c="Џ" r="87, 374, 102, 407" u="1" />
<c c="А" r="103, 374, 116, 407" u="1" o="1" />
<c c="Б" r="117, 374, 130, 407" u="1" o="1" />
<c c="В" r="131, 374, 144, 407" u="1" o="1" />
<c c="Г" r="145, 374, 157, 407" u="1" o="1" />
<c c="Д" r="158, 374, 174, 407" u="1" o="1" />
<c c="Е" r="175, 374, 188, 407" u="1" o="1" />
<c c="Ж" r="189, 374, 212, 407" u="1" o="1" />
<c c="З" r="213, 374, 226, 407" u="1" o="1" />
<c c="И" r="227, 374, 240, 407" u="1" o="1" />
<c c="Й" r="241, 374, 254, 407" u="1" o="1" />
<c c="К" r="255, 374, 268, 407" u="1" o="1" />
<c c="Л" r="269, 374, 283, 407" u="1" o="1" />
<c c="М" r="284, 374, 302, 407" o="1" />
<c c="Н" r="303, 374, 316, 407" u="1" o="1" />
<c c="О" r="317, 374, 330, 407" u="1" o="1" />
<c c="П" r="331, 374, 344, 407" u="1" o="1" />
<c c="Р" r="345, 374, 358, 407" u="1" o="1" />
<c c="С" r="359, 374, 372, 407" u="1" o="1" />
<c c="Т" r="373, 374, 386, 407" u="1" o="1" />
<c c="У" r="387, 374, 400, 407" u="1" o="1" />
<c c="Ф" r="401, 374, 417, 407" u="1" o="1" />
<c c="Х" r="418, 374, 431, 407" u="1" o="1" />
<c c="Ц" r="432, 374, 447, 407" u="1" o="1" />
<c c="Ч" r="448, 374, 461, 407" u="1" o="1" />
<c c="Ш" r="462, 374, 482, 407" />
<c c="Щ" r="483, 374, 502, 407" u="1" o="1" />
<c c="Ъ" r="0, 408, 17, 441" u="1" o="1" />
<c c="Ы" r="18, 408, 35, 441" u="1" o="1" />
<c c="Ь" r="36, 408, 49, 441" u="1" o="1" />
<c c="Э" r="50, 408, 63, 441" u="1" o="1" />
<c c="Ю" r="64, 408, 82, 441" o="1" />
<c c="Я" r="83, 408, 96, 441" u="1" o="1" />
<c c="а" r="97, 408, 110, 441" u="1" o="1" />
<c c="б" r="111, 408, 124, 441" u="1" o="1" />
<c c="в" r="125, 408, 138, 441" u="1" o="1" />
<c c="г" r="139, 408, 150, 441" o="1" />
<c c="д" r="151, 408, 166, 441" u="1" o="1" />
<c c="е" r="167, 408, 180, 441" u="1" o="1" />
<c c="ж" r="181, 408, 204, 441" u="1" o="1" />
<c c="з" r="205, 408, 218, 441" u="1" o="1" />
<c c="и" r="219, 408, 231, 441" u="1" o="1" />
<c c="й" r="232, 408, 244, 441" u="1" o="1" />
<c c="к" r="245, 408, 258, 441" u="1" o="1" />
<c c="л" r="259, 408, 273, 441" u="1" o="1" />
<c c="м" r="274, 408, 290, 441" u="1" o="1" />
<c c="н" r="291, 408, 303, 441" u="1" o="1" />
<c c="о" r="304, 408, 317, 441" u="1" o="1" />
<c c="п" r="318, 408, 330, 441" u="1" o="1" />
<c c="р" r="331, 408, 344, 441" u="1" o="1" />
<c c="с" r="345, 408, 358, 441" u="1" o="1" />
<c c="т" r="359, 408, 371, 441" u="1" o="1" />
<c c="у" r="372, 408, 385, 441" u="1" o="1" />
<c c="ф" r="386, 408, 400, 441" u="1" o="1" />
<c c="х" r="401, 408, 414, 441" u="1" o="1" />
<c c="ц" r="415, 408, 429, 441" u="1" o="1" />
<c c="ч" r="430, 408, 442, 441" u="1" o="1" />
<c c="ш" r="443, 408, 461, 441" u="1" />
<c c="щ" r="462, 408, 480, 441" o="1" />
<c c="ъ" r="481, 408, 498, 441" u="1" o="1" />
<c c="ы" r="0, 442, 17, 475" u="1" o="1" />
<c c="ь" r="18, 442, 31, 475" u="1" o="1" />
<c c="э" r="32, 442, 44, 475" u="2" o="1" />
<c c="ю" r="45, 442, 63, 475" o="1" />
<c c="я" r="64, 442, 77, 475" u="1" o="1" />
<c c="ѐ" r="78, 442, 91, 475" u="1" o="1" />
<c c="ё" r="92, 442, 105, 475" u="1" o="1" />
<c c="ђ" r="106, 442, 119, 475" o="1" />
<c c="ѓ" r="120, 442, 131, 475" o="1" />
<c c="є" r="132, 442, 145, 475" u="1" o="1" />
<c c="ѕ" r="146, 442, 159, 475" u="1" o="1" />
<c c="і" r="160, 442, 166, 475" u="1" />
<c c="ї" r="167, 442, 175, 475" o="-1" />
<c c="ј" r="176, 442, 181, 475" o="1" />
<c c="љ" r="182, 442, 206, 475" o="1" />
<c c="њ" r="207, 442, 229, 475" u="1" o="1" />
<c c="ћ" r="230, 442, 243, 475" o="1" />
<c c="ќ" r="244, 442, 257, 475" u="1" o="1" />
<c c="ѝ" r="258, 442, 270, 475" u="1" o="1" />
<c c="ў" r="271, 442, 284, 475" u="1" o="1" />
<c c="џ" r="285, 442, 299, 475" u="1" />
<c c="Ѥ" r="300, 442, 318, 475" o="1" />
<c c="ѥ" r="319, 442, 337, 475" o="1" />
<c c="Ґ" r="338, 442, 350, 475" u="1" o="1" />
<c c="ґ" r="351, 442, 362, 475" o="1" />
<c c="Ҕ" r="363, 442, 375, 475" u="1" o="1" />
<c c="ҕ" r="376, 442, 387, 475" o="1" />
<c c="Ӏ" r="388, 442, 391, 475" u="1" o="1" />
<c c="Ӂ" r="392, 442, 415, 475" u="1" o="1" />
<c c="ӂ" r="416, 442, 439, 475" u="1" o="1" />
<c c="Ӑ" r="440, 442, 453, 475" u="1" o="1" />
<c c="ӑ" r="454, 442, 467, 475" u="1" o="1" />
<c c="Ӓ" r="468, 442, 481, 475" u="1" o="1" />
<c c="ӓ" r="482, 442, 495, 475" u="1" o="1" />
<c c="Ӕ" r="0, 476, 23, 509" u="1" o="1" />
<c c="ӕ" r="24, 476, 47, 509" u="1" o="1" />
<c c="Ӗ" r="48, 476, 61, 509" u="1" o="1" />
<c c="ӗ" r="62, 476, 75, 509" u="1" o="1" />
<c c="Ӝ" r="76, 476, 99, 509" u="1" o="1" />
<c c="ӝ" r="100, 476, 123, 509" u="1" o="1" />
<c c="Ӟ" r="124, 476, 137, 509" u="1" o="1" />
<c c="ӟ" r="138, 476, 151, 509" u="1" o="1" />
<c c="Ӣ" r="152, 476, 166, 509" o="1" />
<c c="ӣ" r="167, 476, 181, 509" />
<c c="Ӥ" r="182, 476, 195, 509" u="1" o="1" />
<c c="ӥ" r="196, 476, 208, 509" u="1" o="1" />
<c c="Ӧ" r="209, 476, 222, 509" u="1" o="1" />
<c c="ӧ" r="223, 476, 236, 509" u="1" o="1" />
<c c="Ө" r="237, 476, 250, 509" u="1" o="1" />
<c c="ө" r="251, 476, 264, 509" u="1" o="1" />
<c c="Ӫ" r="265, 476, 278, 509" u="1" o="1" />
<c c="ӫ" r="279, 476, 292, 509" u="1" o="1" />
<c c="Ӭ" r="293, 476, 306, 509" u="1" o="1" />
<c c="ӭ" r="307, 476, 319, 509" u="2" o="1" />
<c c="Ӯ" r="320, 476, 334, 509" o="1" />
<c c="ӯ" r="335, 476, 349, 509" o="1" />
<c c="Ӱ" r="350, 476, 363, 509" u="1" o="1" />
<c c="ӱ" r="364, 476, 377, 509" u="1" o="1" />
<c c="Ӳ" r="378, 476, 391, 509" u="1" o="1" />
<c c="ӳ" r="392, 476, 405, 509" u="1" o="1" />
<c c="Ӵ" r="406, 476, 419, 509" u="1" o="1" />
<c c="ӵ" r="420, 476, 432, 509" u="1" o="1" />
<c c="Ӹ" r="433, 476, 450, 509" u="1" o="1" />
<c c="ӹ" r="451, 476, 468, 509" u="1" o="1" />
<c c="Ḁ" r="469, 476, 482, 509" u="1" o="1" />
<c c="ḁ" r="483, 476, 496, 509" u="1" o="1" />
<c c="Ḃ" r="497, 476, 510, 509" u="1" o="1" />
<c c="ḃ" i="1" r="0, 0, 13, 33" u="1" o="1" />
<c c="Ḅ" i="1" r="14, 0, 27, 33" u="1" o="1" />
<c c="ḅ" i="1" r="28, 0, 41, 33" u="1" o="1" />
<c c="Ḇ" i="1" r="42, 0, 56, 33" o="1" />
<c c="ḇ" i="1" r="57, 0, 71, 33" o="1" />
<c c="Ḉ" i="1" r="72, 0, 85, 33" u="1" o="1" />
<c c="ḉ" i="1" r="86, 0, 99, 33" u="1" o="1" />
<c c="Ḋ" i="1" r="100, 0, 113, 33" u="1" o="1" />
<c c="ḋ" i="1" r="114, 0, 127, 33" u="1" o="1" />
<c c="Ḍ" i="1" r="128, 0, 141, 33" u="1" o="1" />
<c c="ḍ" i="1" r="142, 0, 155, 33" u="1" o="1" />
<c c="Ḏ" i="1" r="156, 0, 170, 33" o="1" />
<c c="ḏ" i="1" r="171, 0, 185, 33" o="1" />
<c c="Ḑ" i="1" r="186, 0, 199, 33" u="1" o="1" />
<c c="ḑ" i="1" r="200, 0, 213, 33" u="1" o="1" />
<c c="Ḓ" i="1" r="214, 0, 227, 33" u="1" o="1" />
<c c="ḓ" i="1" r="228, 0, 241, 33" u="1" o="1" />
<c c="Ḕ" i="1" r="242, 0, 256, 33" o="1" />
<c c="ḕ" i="1" r="257, 0, 271, 33" o="1" />
<c c="Ḗ" i="1" r="272, 0, 286, 33" o="1" />
<c c="ḗ" i="1" r="287, 0, 301, 33" o="1" />
<c c="Ḙ" i="1" r="302, 0, 315, 33" u="1" o="1" />
<c c="ḙ" i="1" r="316, 0, 329, 33" u="1" o="1" />
<c c="Ḛ" i="1" r="330, 0, 343, 33" u="1" o="1" />
<c c="ḛ" i="1" r="344, 0, 357, 33" u="1" o="1" />
<c c="Ḝ" i="1" r="358, 0, 371, 33" u="1" o="1" />
<c c="ḝ" i="1" r="372, 0, 385, 33" u="1" o="1" />
<c c="Ḟ" i="1" r="386, 0, 399, 33" u="1" o="1" />
<c c="ḟ" i="1" r="400, 0, 409, 33" u="1" />
<c c="Ḡ" i="1" r="410, 0, 424, 33" o="1" />
<c c="ḡ" i="1" r="425, 0, 439, 33" o="1" />
<c c="Ḣ" i="1" r="440, 0, 453, 33" u="1" o="1" />
<c c="ḣ" i="1" r="454, 0, 467, 33" u="1" o="1" />
<c c="Ḥ" i="1" r="468, 0, 481, 33" u="1" o="1" />
<c c="ḥ" i="1" r="482, 0, 495, 33" u="1" o="1" />
<c c="Ḧ" i="1" r="496, 0, 509, 33" u="1" o="1" />
<c c="ḧ" i="1" r="0, 34, 13, 67" u="1" o="1" />
<c c="Ḩ" i="1" r="14, 34, 27, 67" u="1" o="1" />
<c c="ḩ" i="1" r="28, 34, 41, 67" u="1" o="1" />
<c c="Ḫ" i="1" r="42, 34, 55, 67" u="1" o="1" />
<c c="ḫ" i="1" r="56, 34, 69, 67" u="1" o="1" />
<c c="Ḭ" i="1" r="70, 34, 79, 67" u="-2" o="-2" />
<c c="ḭ" i="1" r="80, 34, 89, 67" o="-2" />
<c c="Ḯ" i="1" r="90, 34, 97, 67" u="-1" o="-1" />
<c c="ḯ" i="1" r="98, 34, 106, 67" />
<c c="Ḱ" i="1" r="107, 34, 120, 67" u="1" o="1" />
<c c="ḱ" i="1" r="121, 34, 134, 67" u="1" o="1" />
<c c="Ḳ" i="1" r="135, 34, 148, 67" u="1" o="1" />
<c c="ḳ" i="1" r="149, 34, 162, 67" u="1" o="1" />
<c c="Ḵ" i="1" r="163, 34, 177, 67" o="1" />
<c c="ḵ" i="1" r="178, 34, 192, 67" o="1" />
<c c="Ḷ" i="1" r="193, 34, 204, 67" o="1" />
<c c="ḷ" i="1" r="205, 34, 211, 67" u="1" />
<c c="Ḹ" i="1" r="212, 34, 223, 67" o="1" />
<c c="ḹ" i="1" r="224, 34, 232, 67" o="-1" />
<c c="Ḻ" i="1" r="233, 34, 244, 67" o="1" />
<c c="ḻ" i="1" r="245, 34, 253, 67" />
<c c="Ḽ" i="1" r="254, 34, 265, 67" o="1" />
<c c="ḽ" i="1" r="266, 34, 275, 67" o="-1" />
<c c="Ḿ" i="1" r="276, 34, 295, 67" u="1" o="1" />
<c c="ḿ" i="1" r="296, 34, 315, 67" u="1" o="1" />
<c c="Ṁ" i="1" r="316, 34, 335, 67" u="1" o="1" />
<c c="ṁ" i="1" r="336, 34, 355, 67" u="1" o="1" />
<c c="Ṃ" i="1" r="356, 34, 375, 67" u="1" o="1" />
<c c="ṃ" i="1" r="376, 34, 395, 67" u="1" o="1" />
<c c="Ṅ" i="1" r="396, 34, 409, 67" u="1" o="1" />
<c c="ṅ" i="1" r="410, 34, 423, 67" u="1" o="1" />
<c c="Ṇ" i="1" r="424, 34, 437, 67" u="1" o="1" />
<c c="ṇ" i="1" r="438, 34, 451, 67" u="1" o="1" />
<c c="Ṉ" i="1" r="452, 34, 466, 67" o="1" />
<c c="ṉ" i="1" r="467, 34, 481, 67" o="1" />
<c c="Ṋ" i="1" r="482, 34, 495, 67" u="1" o="1" />
<c c="ṋ" i="1" r="496, 34, 509, 67" u="1" o="1" />
<c c="Ṍ" i="1" r="0, 68, 13, 101" u="1" o="1" />
<c c="ṍ" i="1" r="14, 68, 27, 101" u="1" o="1" />
<c c="Ṏ" i="1" r="28, 68, 41, 101" u="1" o="1" />
<c c="ṏ" i="1" r="42, 68, 55, 101" u="1" o="1" />
<c c="Ṑ" i="1" r="56, 68, 70, 101" o="1" />
<c c="ṑ" i="1" r="71, 68, 85, 101" o="1" />
<c c="Ṓ" i="1" r="86, 68, 100, 101" o="1" />
<c c="ṓ" i="1" r="101, 68, 115, 101" o="1" />
<c c="Ṕ" i="1" r="116, 68, 129, 101" u="1" o="1" />
<c c="ṕ" i="1" r="130, 68, 143, 101" u="1" o="1" />
<c c="Ṗ" i="1" r="144, 68, 157, 101" u="1" o="1" />
<c c="ṗ" i="1" r="158, 68, 171, 101" u="1" o="1" />
<c c="Ṙ" i="1" r="172, 68, 185, 101" u="1" o="1" />
<c c="ṙ" i="1" r="186, 68, 193, 101" u="1" o="1" />
<c c="Ṛ" i="1" r="194, 68, 207, 101" u="1" o="1" />
<c c="ṛ" i="1" r="208, 68, 215, 101" u="1" o="1" />
<c c="Ṝ" i="1" r="216, 68, 230, 101" o="1" />
<c c="ṝ" i="1" r="231, 68, 239, 101" o="1" />
<c c="Ṟ" i="1" r="240, 68, 254, 101" o="1" />
<c c="ṟ" i="1" r="255, 68, 262, 101" u="1" o="1" />
<c c="Ṡ" i="1" r="263, 68, 276, 101" u="1" o="1" />
<c c="ṡ" i="1" r="277, 68, 290, 101" u="1" o="1" />
<c c="Ṣ" i="1" r="291, 68, 304, 101" u="1" o="1" />
<c c="ṣ" i="1" r="305, 68, 318, 101" u="1" o="1" />
<c c="Ṥ" i="1" r="319, 68, 332, 101" u="1" o="1" />
<c c="ṥ" i="1" r="333, 68, 346, 101" u="1" o="1" />
<c c="Ṧ" i="1" r="347, 68, 360, 101" u="1" o="1" />
<c c="ṧ" i="1" r="361, 68, 374, 101" u="1" o="1" />
<c c="Ṩ" i="1" r="375, 68, 388, 101" u="1" o="1" />
<c c="ṩ" i="1" r="389, 68, 402, 101" u="1" o="1" />
<c c="Ṫ" i="1" r="403, 68, 416, 101" u="1" o="1" />
<c c="ṫ" i="1" r="417, 68, 424, 101" u="1" />
<c c="Ṭ" i="1" r="425, 68, 438, 101" u="1" o="1" />
<c c="ṭ" i="1" r="439, 68, 446, 101" u="1" />
<c c="Ṯ" i="1" r="447, 68, 461, 101" o="1" />
<c c="ṯ" i="1" r="462, 68, 470, 101" />
<c c="Ṱ" i="1" r="471, 68, 484, 101" u="1" o="1" />
<c c="ṱ" i="1" r="485, 68, 494, 101" o="-1" />
<c c="Ṳ" i="1" r="495, 68, 508, 101" u="1" o="1" />
<c c="ṳ" i="1" r="0, 102, 13, 135" u="1" o="1" />
<c c="Ṵ" i="1" r="14, 102, 27, 135" u="1" o="1" />
<c c="ṵ" i="1" r="28, 102, 41, 135" u="1" o="1" />
<c c="Ṷ" i="1" r="42, 102, 55, 135" u="1" o="1" />
<c c="ṷ" i="1" r="56, 102, 69, 135" u="1" o="1" />
<c c="Ṹ" i="1" r="70, 102, 83, 135" u="1" o="1" />
<c c="ṹ" i="1" r="84, 102, 97, 135" u="1" o="1" />
<c c="Ṻ" i="1" r="98, 102, 112, 135" o="1" />
<c c="ṻ" i="1" r="113, 102, 127, 135" o="1" />
<c c="Ṽ" i="1" r="128, 102, 141, 135" u="1" o="1" />
<c c="ṽ" i="1" r="142, 102, 155, 135" u="1" o="1" />
<c c="Ṿ" i="1" r="156, 102, 169, 135" u="1" o="1" />
<c c="ṿ" i="1" r="170, 102, 183, 135" u="1" o="1" />
<c c="Ẁ" i="1" r="184, 102, 204, 135" u="1" o="1" />
<c c="ẁ" i="1" r="205, 102, 224, 135" u="1" o="1" />
<c c="Ẃ" i="1" r="225, 102, 245, 135" u="1" o="1" />
<c c="ẃ" i="1" r="246, 102, 265, 135" u="1" o="1" />
<c c="Ẅ" i="1" r="266, 102, 286, 135" u="1" o="1" />
<c c="ẅ" i="1" r="287, 102, 306, 135" u="1" o="1" />
<c c="Ẇ" i="1" r="307, 102, 327, 135" u="1" o="1" />
<c c="ẇ" i="1" r="328, 102, 347, 135" u="1" o="1" />
<c c="Ẉ" i="1" r="348, 102, 368, 135" u="1" o="1" />
<c c="ẉ" i="1" r="369, 102, 388, 135" u="1" o="1" />
<c c="Ẋ" i="1" r="389, 102, 402, 135" u="1" o="1" />
<c c="ẋ" i="1" r="403, 102, 416, 135" u="1" o="1" />
<c c="Ẍ" i="1" r="417, 102, 430, 135" u="1" o="1" />
<c c="ẍ" i="1" r="431, 102, 444, 135" u="1" o="1" />
<c c="Ẏ" i="1" r="445, 102, 458, 135" u="1" o="1" />
<c c="ẏ" i="1" r="459, 102, 472, 135" u="1" o="1" />
<c c="Ẑ" i="1" r="473, 102, 488, 135" o="1" />
<c c="ẑ" i="1" r="489, 102, 503, 135" o="1" />
<c c="Ẓ" i="1" r="0, 136, 15, 169" o="1" />
<c c="ẓ" i="1" r="16, 136, 30, 169" o="1" />
<c c="Ẕ" i="1" r="31, 136, 46, 169" o="1" />
<c c="ẕ" i="1" r="47, 136, 61, 169" o="1" />
<c c="ẖ" i="1" r="62, 136, 76, 169" o="1" />
<c c="ẗ" i="1" r="77, 136, 86, 169" />
<c c="ẘ" i="1" r="87, 136, 106, 169" u="1" o="1" />
<c c="ẙ" i="1" r="107, 136, 120, 169" u="1" o="1" />
<c c="Ạ" i="1" r="121, 136, 134, 169" u="1" o="1" />
<c c="ạ" i="1" r="135, 136, 148, 169" u="1" o="1" />
<c c="Ấ" i="1" r="149, 136, 162, 169" u="1" o="1" />
<c c="ấ" i="1" r="163, 136, 176, 169" u="1" o="1" />
<c c="Ầ" i="1" r="177, 136, 190, 169" u="1" o="1" />
<c c="ầ" i="1" r="191, 136, 204, 169" u="1" o="1" />
<c c="Ẫ" i="1" r="205, 136, 218, 169" u="1" o="1" />
<c c="ẫ" i="1" r="219, 136, 232, 169" u="1" o="1" />
<c c="Ậ" i="1" r="233, 136, 246, 169" u="1" o="1" />
<c c="ậ" i="1" r="247, 136, 260, 169" u="1" o="1" />
<c c="Ắ" i="1" r="261, 136, 274, 169" u="1" o="1" />
<c c="ắ" i="1" r="275, 136, 288, 169" u="1" o="1" />
<c c="Ằ" i="1" r="289, 136, 302, 169" u="1" o="1" />
<c c="ằ" i="1" r="303, 136, 316, 169" u="1" o="1" />
<c c="Ẵ" i="1" r="317, 136, 330, 169" u="1" o="1" />
<c c="ẵ" i="1" r="331, 136, 344, 169" u="1" o="1" />
<c c="Ặ" i="1" r="345, 136, 358, 169" u="1" o="1" />
<c c="ặ" i="1" r="359, 136, 372, 169" u="1" o="1" />
<c c="Ẹ" i="1" r="373, 136, 386, 169" u="1" o="1" />
<c c="ẹ" i="1" r="387, 136, 400, 169" u="1" o="1" />
<c c="Ẽ" i="1" r="401, 136, 414, 169" u="1" o="1" />
<c c="ẽ" i="1" r="415, 136, 428, 169" u="1" o="1" />
<c c="Ế" i="1" r="429, 136, 442, 169" u="1" o="1" />
<c c="ế" i="1" r="443, 136, 456, 169" u="1" o="1" />
<c c="Ề" i="1" r="457, 136, 470, 169" u="1" o="1" />
<c c="ề" i="1" r="471, 136, 484, 169" u="1" o="1" />
<c c="Ễ" i="1" r="485, 136, 498, 169" u="1" o="1" />
<c c="ễ" i="1" r="499, 136, 512, 169" u="1" o="1" />
<c c="Ệ" i="1" r="0, 170, 13, 203" u="1" o="1" />
<c c="ệ" i="1" r="14, 170, 27, 203" u="1" o="1" />
<c c="Ị" i="1" r="28, 170, 31, 203" u="1" o="1" />
<c c="ị" i="1" r="32, 170, 38, 203" u="1" />
<c c="Ọ" i="1" r="39, 170, 52, 203" u="1" o="1" />
<c c="ọ" i="1" r="53, 170, 66, 203" u="1" o="1" />
<c c="Ố" i="1" r="67, 170, 80, 203" u="1" o="1" />
<c c="ố" i="1" r="81, 170, 94, 203" u="1" o="1" />
<c c="Ồ" i="1" r="95, 170, 108, 203" u="1" o="1" />
<c c="ồ" i="1" r="109, 170, 122, 203" u="1" o="1" />
<c c="Ỗ" i="1" r="123, 170, 136, 203" u="1" o="1" />
<c c="ỗ" i="1" r="137, 170, 150, 203" u="1" o="1" />
<c c="Ộ" i="1" r="151, 170, 164, 203" u="1" o="1" />
<c c="ộ" i="1" r="165, 170, 178, 203" u="1" o="1" />
<c c=" " i="1" r="179, 170, 180, 203" o="10" />
<c c="" i="1" r="181, 170, 182, 203" o="21" />
<c c="" i="1" r="183, 170, 184, 203" o="10" />
<c c="" i="1" r="185, 170, 186, 203" o="21" />
<c c="" i="1" r="187, 170, 188, 203" o="7" />
<c c="" i="1" r="189, 170, 190, 203" o="5" />
<c c="" i="1" r="191, 170, 192, 203" o="3" />
<c c="" i="1" r="193, 170, 194, 203" o="16" />
<c c="" i="1" r="195, 170, 196, 203" o="5" />
<c c="" i="1" r="197, 170, 198, 203" o="4" />
<c c="" i="1" r="199, 170, 200, 203" o="2" />
<c c="" i="1" r="201, 170, 212, 203" o="1" />
<c c="" i="1" r="213, 170, 224, 203" o="1" />
<c c="" i="1" r="225, 170, 239, 203" o="1" />
<c c="" i="1" r="240, 170, 255, 203" o="2" />
<c c="—" i="1" r="256, 170, 276, 203" o="1" />
<c c="―" i="1" r="277, 170, 298, 203" o="1" />
<c c="‗" i="1" r="299, 170, 315, 203" />
<c c="" i="1" r="316, 170, 320, 203" u="1" />
<c c="" i="1" r="321, 170, 325, 203" u="1" />
<c c="" i="1" r="326, 170, 330, 203" u="1" />
<c c="" i="1" r="331, 170, 335, 203" u="1" />
<c c="“" i="1" r="336, 170, 344, 203" u="1" />
<c c="”" i="1" r="345, 170, 353, 203" u="1" />
<c c="„" i="1" r="354, 170, 362, 203" u="1" />
<c c="‟" i="1" r="363, 170, 371, 203" u="1" />
<c c="•" i="1" r="372, 170, 378, 203" o="2" />
<c c="" i="1" r="379, 170, 382, 203" u="1" o="1" />
<c c="‥" i="1" r="383, 170, 390, 203" u="1" o="1" />
<c c="…" i="1" r="391, 170, 402, 203" o="1" />
<c c="‧" i="1" r="403, 170, 406, 203" u="1" o="1" />
<c c="‰" i="1" r="407, 170, 429, 203" u="1" />
<c c="‱" i="1" r="430, 170, 459, 203" u="1" />
<c c="" i="1" r="460, 170, 477, 203" u="-3" o="-4" />
<c c="⁰" i="1" r="478, 170, 488, 203" u="1" />
<c c="⁴" i="1" r="489, 170, 500, 203" u="1" o="-1" />
<c c="⁵" i="1" r="501, 170, 511, 203" u="1" />
<c c="⁶" i="1" r="0, 204, 10, 237" u="1" />
<c c="⁷" i="1" r="11, 204, 21, 237" />
<c c="⁸" i="1" r="22, 204, 32, 237" u="1" />
<c c="⁹" i="1" r="33, 204, 43, 237" u="1" />
<c c="₀" i="1" r="44, 204, 54, 237" u="1" />
<c c="₁" i="1" r="55, 204, 60, 237" />
<c c="₂" i="1" r="61, 204, 72, 237" />
<c c="₃" i="1" r="73, 204, 83, 237" u="1" />
<c c="₄" i="1" r="84, 204, 95, 237" u="1" o="-1" />
<c c="₅" i="1" r="96, 204, 106, 237" u="1" />
<c c="₆" i="1" r="107, 204, 117, 237" u="1" />
<c c="₇" i="1" r="118, 204, 128, 237" />
<c c="₈" i="1" r="129, 204, 139, 237" u="1" />
<c c="₉" i="1" r="140, 204, 150, 237" u="1" />
<c c="€" i="1" r="151, 204, 168, 237" />
<c c="" i="1" r="169, 204, 184, 237" o="1" />
<c c="" i="1" r="185, 204, 199, 237" o="1" />
<c c="" i="1" r="200, 204, 218, 237" o="1" />
<c c="" i="1" r="219, 204, 232, 237" u="1" o="1" />
<c c="" i="1" r="233, 204, 248, 237" u="1" o="-1" />
<c c="" i="1" r="249, 204, 266, 237" u="1" o="1" />
<c c="" i="1" r="267, 204, 284, 237" u="1" o="1" />
<c c="" i="1" r="285, 204, 303, 237" o="1" />
<c c="" i="1" r="304, 204, 321, 237" u="1" o="1" />
<c c="ff" i="1" r="322, 204, 339, 237" o="1" />
<c c="fi" i="1" r="340, 204, 355, 237" />
<c c="fl" i="1" r="356, 204, 372, 237" />
<c c="ffi" i="1" r="373, 204, 395, 237" />
<c c="ffl" i="1" r="396, 204, 419, 237" />
<c c="ſt" i="1" r="420, 204, 435, 237" />
<c c="st" i="1" r="436, 204, 456, 237" u="1" />
-->
</font>

View File

@ -2,7 +2,7 @@
<div x="2%" y="1%" width="96%" height="99%" layout="vertical-row" >
<label width="100%" height="25" I18N="Section in track selection screen" text="Grand Prix"
<header width="100%" I18N="Section in track selection screen" text="Grand Prix"
align="center" text_align="center" />
<buttonbar id="gps" height="175" width="100%" align="center" square_items="true">
@ -12,7 +12,7 @@
<icon-button id="gp4" width="171" height="128" icon="gui/track4.png" text="At World's End"/>
</buttonbar>
<label width="100%" height="25" I18N="Section in track selection screen" text="All Tracks"
<header width="100%" I18N="Section in track selection screen" text="All Tracks"
align="center" text_align="center" />
<box proportion="1" width="100%" layout="vertical-row">

627
src/guiengine/CGUIFont.cpp Normal file
View File

@ -0,0 +1,627 @@
// Copyright (C) 2002-2009 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#include "CGUIFont.h"
#include "IGUIEnvironment.h"
#include "IXMLReader.h"
#include "IReadFile.h"
#include "IVideoDriver.h"
#include "IGUISpriteBank.h"
#include <iostream>
#include "guiengine/engine.hpp"
#include "io/file_manager.hpp"
namespace irr
{
namespace gui
{
//! constructor
ScalableFont::ScalableFont(IGUIEnvironment *env, const io::path& filename)
: Driver(0), SpriteBank(0), Environment(env), WrongCharacter(0),
MaxHeight(0), GlobalKerningWidth(0), GlobalKerningHeight(0)
{
#ifdef _DEBUG
setDebugName("ScalableFont");
#endif
m_scale = 1.0f;
if (Environment)
{
// don't grab environment, to avoid circular references
Driver = Environment->getVideoDriver();
SpriteBank = Environment->addEmptySpriteBank(filename);
if (SpriteBank)
SpriteBank->grab();
}
if (Driver)
Driver->grab();
setInvisibleCharacters ( L" " );
load( file_manager->createXMLReader(filename.c_str()) );
}
//! destructor
ScalableFont::~ScalableFont()
{
if (Driver)
Driver->drop();
if (SpriteBank)
SpriteBank->drop();
}
//! loads a font file from xml
bool ScalableFont::load(io::IXMLReader* xml)
{
if (!SpriteBank)
return false;
while (xml->read())
{
if (io::EXN_ELEMENT == xml->getNodeType())
{
if (core::stringw(L"Texture") == xml->getNodeName())
{
// add a texture
core::stringc fn = core::stringc((file_manager->getGUIDir() + "/").c_str()) + xml->getAttributeValue(L"filename");
u32 i = (u32)xml->getAttributeValueAsInt(L"index");
core::stringw alpha = xml->getAttributeValue(L"hasAlpha");
std::cout << "---- Adding font texture " << fn.c_str() << "; alpha=" << alpha.c_str() << std::endl;
while (i+1 > SpriteBank->getTextureCount())
SpriteBank->addTexture(0);
// disable mipmaps+filtering
//bool mipmap = Driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
//Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
// load texture
SpriteBank->setTexture(i, Driver->getTexture(fn));
// set previous mip-map+filter state
//Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, mipmap);
// couldn't load texture, abort.
if (!SpriteBank->getTexture(i))
{
std::cerr << "!!!!! Unable to load all textures in the font, aborting" << std::endl;
_IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX;
return false;
}
else
{
// colorkey texture rather than alpha channel?
if (alpha == core::stringw("false"))
Driver->makeColorKeyTexture(SpriteBank->getTexture(i), core::position2di(0,0));
}
}
else if (core::stringw(L"c") == xml->getNodeName())
{
// adding a character to this font
SFontArea a;
SGUISpriteFrame f;
SGUISprite s;
core::rect<s32> rectangle;
a.underhang = xml->getAttributeValueAsInt(L"u");
a.overhang = xml->getAttributeValueAsInt(L"o");
a.spriteno = SpriteBank->getSprites().size();
s32 texno = xml->getAttributeValueAsInt(L"i");
// parse rectangle
core::stringc rectstr = xml->getAttributeValue(L"r");
wchar_t ch = xml->getAttributeValue(L"c")[0];
const c8 *c = rectstr.c_str();
s32 val;
val = 0;
while (*c >= '0' && *c <= '9')
{
val *= 10;
val += *c - '0';
c++;
}
rectangle.UpperLeftCorner.X = val;
while (*c == L' ' || *c == L',') c++;
val = 0;
while (*c >= '0' && *c <= '9')
{
val *= 10;
val += *c - '0';
c++;
}
rectangle.UpperLeftCorner.Y = val;
while (*c == L' ' || *c == L',') c++;
val = 0;
while (*c >= '0' && *c <= '9')
{
val *= 10;
val += *c - '0';
c++;
}
rectangle.LowerRightCorner.X = val;
while (*c == L' ' || *c == L',') c++;
val = 0;
while (*c >= '0' && *c <= '9')
{
val *= 10;
val += *c - '0';
c++;
}
rectangle.LowerRightCorner.Y = val;
CharacterMap.insert(ch,Areas.size());
//std::cout << "Inserting character '" << ch << "' with area " << Areas.size() << std::endl;
// make frame
f.rectNumber = SpriteBank->getPositions().size();
f.textureNumber = texno;
// add frame to sprite
s.Frames.push_back(f);
s.frameTime = 0;
// add rectangle to sprite bank
SpriteBank->getPositions().push_back(rectangle);
a.width = rectangle.getWidth();
// add sprite to sprite bank
SpriteBank->getSprites().push_back(s);
// add character to font
Areas.push_back(a);
}
}
}
// set bad character
WrongCharacter = getAreaFromCharacter(L' ');
setMaxHeight();
return true;
}
void ScalableFont::setScale(const float scale)
{
m_scale = scale;
}
void ScalableFont::setMaxHeight()
{
MaxHeight = 0;
s32 t;
core::array< core::rect<s32> >& p = SpriteBank->getPositions();
for (u32 i=0; i<p.size(); ++i)
{
t = p[i].getHeight();
if (t>MaxHeight)
MaxHeight = t;
}
}
//! loads a font file, native file needed, for texture parsing
bool ScalableFont::load(io::IReadFile* file)
{
if (!Driver)
return false;
return loadTexture(Driver->createImageFromFile(file),
file->getFileName());
}
//! loads a font file, native file needed, for texture parsing
bool ScalableFont::load(const io::path& filename)
{
if (!Driver)
return false;
return loadTexture(Driver->createImageFromFile( filename ),
filename);
}
//! load & prepare font from ITexture
bool ScalableFont::loadTexture(video::IImage* image, const io::path& name)
{
if (!image)
return false;
s32 lowerRightPositions = 0;
video::IImage* tmpImage=image;
/*
bool deleteTmpImage=false;
switch(image->getColorFormat())
{
case video::ECF_R5G6B5:
tmpImage = new video::CImage(video::ECF_A1R5G5B5,image);
deleteTmpImage=true;
break;
case video::ECF_A1R5G5B5:
case video::ECF_A8R8G8B8:
break;
case video::ECF_R8G8B8:
tmpImage = new video::CImage(video::ECF_A8R8G8B8,image);
deleteTmpImage=true;
break;
}*/
readPositions(tmpImage, lowerRightPositions);
WrongCharacter = getAreaFromCharacter(L' ');
// output warnings
if (!lowerRightPositions || !SpriteBank->getSprites().size())
std::cerr << "Either no upper or lower corner pixels in the font file. If this font was made using the new font tool, please load the XML file instead. If not, the font may be corrupted.\n";
else
if (lowerRightPositions != (s32)SpriteBank->getPositions().size())
std::cerr << "The amount of upper corner pixels and the lower corner pixels is not equal, font file may be corrupted.\n";
bool ret = ( !SpriteBank->getSprites().empty() && lowerRightPositions );
if ( ret )
{
bool flag[2];
flag[0] = Driver->getTextureCreationFlag ( video::ETCF_ALLOW_NON_POWER_2 );
flag[1] = Driver->getTextureCreationFlag ( video::ETCF_CREATE_MIP_MAPS );
Driver->setTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2, true);
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false );
SpriteBank->addTexture(Driver->addTexture(name, tmpImage));
Driver->setTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2, flag[0] );
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flag[1] );
}
//if (deleteTmpImage)
// tmpImage->drop();
image->drop();
setMaxHeight();
return ret;
}
void ScalableFont::readPositions(video::IImage* image, s32& lowerRightPositions)
{
const core::dimension2d<u32> size = image->getDimension();
video::SColor colorTopLeft = image->getPixel(0,0);
colorTopLeft.setAlpha(255);
image->setPixel(0,0,colorTopLeft);
video::SColor colorLowerRight = image->getPixel(1,0);
video::SColor colorBackGround = image->getPixel(2,0);
video::SColor colorBackGroundTransparent = 0;
image->setPixel(1,0,colorBackGround);
// start parsing
core::position2d<s32> pos(0,0);
for (pos.Y=0; pos.Y<(s32)size.Height; ++pos.Y)
{
for (pos.X=0; pos.X<(s32)size.Width; ++pos.X)
{
const video::SColor c = image->getPixel(pos.X, pos.Y);
if (c == colorTopLeft)
{
image->setPixel(pos.X, pos.Y, colorBackGroundTransparent);
SpriteBank->getPositions().push_back(core::rect<s32>(pos, pos));
}
else
if (c == colorLowerRight)
{
// too many lower right points
if (SpriteBank->getPositions().size()<=(u32)lowerRightPositions)
{
lowerRightPositions = 0;
return;
}
image->setPixel(pos.X, pos.Y, colorBackGroundTransparent);
SpriteBank->getPositions()[lowerRightPositions].LowerRightCorner = pos;
// add frame to sprite bank
SGUISpriteFrame f;
f.rectNumber = lowerRightPositions;
f.textureNumber = 0;
SGUISprite s;
s.Frames.push_back(f);
s.frameTime = 0;
SpriteBank->getSprites().push_back(s);
// add character to font
SFontArea a;
a.overhang = 0;
a.underhang = 0;
a.spriteno = lowerRightPositions;
a.width = SpriteBank->getPositions()[lowerRightPositions].getWidth();
Areas.push_back(a);
// map letter to character
wchar_t ch = (wchar_t)(lowerRightPositions + 32);
CharacterMap.set(ch, lowerRightPositions);
++lowerRightPositions;
}
else
if (c == colorBackGround)
image->setPixel(pos.X, pos.Y, colorBackGroundTransparent);
}
}
}
//! set an Pixel Offset on Drawing ( scale position on width )
void ScalableFont::setKerningWidth(s32 kerning)
{
GlobalKerningWidth = kerning;
}
//! set an Pixel Offset on Drawing ( scale position on width )
s32 ScalableFont::getKerningWidth(const wchar_t* thisLetter, const wchar_t* previousLetter) const
{
s32 ret = GlobalKerningWidth;
if (thisLetter)
{
ret += Areas[getAreaFromCharacter(*thisLetter)].overhang;
if (previousLetter)
{
ret += Areas[getAreaFromCharacter(*previousLetter)].underhang;
}
}
return ret;
}
//! set an Pixel Offset on Drawing ( scale position on height )
void ScalableFont::setKerningHeight(s32 kerning)
{
GlobalKerningHeight = kerning;
}
//! set an Pixel Offset on Drawing ( scale position on height )
s32 ScalableFont::getKerningHeight () const
{
return GlobalKerningHeight;
}
//! returns the sprite number from a given character
u32 ScalableFont::getSpriteNoFromChar(const wchar_t *c) const
{
return Areas[getAreaFromCharacter(*c)].spriteno;
}
s32 ScalableFont::getAreaFromCharacter(const wchar_t c) const
{
core::map<wchar_t, s32>::Node* n = CharacterMap.find(c);
if (n)
return n->getValue();
else
return WrongCharacter;
}
void ScalableFont::setInvisibleCharacters( const wchar_t *s )
{
Invisible = s;
}
//! returns the dimension of text
core::dimension2d<u32> ScalableFont::getDimension(const wchar_t* text) const
{
core::dimension2d<u32> dim(0, 0);
core::dimension2d<u32> thisLine(0, MaxHeight);
for (const wchar_t* p = text; *p; ++p)
{
bool lineBreak=false;
if (*p == L'\r') // Windows breaks
{
lineBreak = true;
if (p[1] == L'\n') // Windows breaks
++p;
}
else if (*p == L'\n') // Unix breaks
{
lineBreak = true;
}
if (lineBreak)
{
dim.Height += thisLine.Height;
if (dim.Width < thisLine.Width)
dim.Width = thisLine.Width;
thisLine.Width = 0;
continue;
}
const int areaID = getAreaFromCharacter(*p);
const SFontArea &area = Areas[areaID];
thisLine.Width += area.underhang;
thisLine.Width += area.width + area.overhang + GlobalKerningWidth;
}
dim.Height += thisLine.Height;
if (dim.Width < thisLine.Width)
dim.Width = thisLine.Width;
// std::cout << "ScalableFont::getDimension returns : " << dim.Width << ", " << dim.Height << " --> ";
dim.Width = (int)(dim.Width * m_scale);
dim.Height = (int)(dim.Height * m_scale);
//std::cout << dim.Width << ", " << dim.Height << std::endl;
return dim;
}
//! draws some text and clips it to the specified rectangle if wanted
void ScalableFont::draw(const core::stringw& text, const core::rect<s32>& position,
video::SColor color, bool hcenter, bool vcenter, const core::rect<s32>* clip)
{
if (!Driver)
return;
//color = video::SColor(255,255,255,255);
core::dimension2d<s32> textDimension;
core::position2d<s32> offset = position.UpperLeftCorner;
if (hcenter || vcenter || clip)
textDimension = getDimension(text.c_str());
if (hcenter)
{
offset.X += (position.getWidth() - textDimension.Width) >> 1;
}
if (vcenter)
offset.Y += (position.getHeight() - textDimension.Height) >> 1;
if (clip)
{
core::rect<s32> clippedRect(offset, textDimension);
clippedRect.clipAgainst(*clip);
if (!clippedRect.isValid())
return;
}
core::array<u32> indices(text.size());
core::array<core::position2di> offsets(text.size());
for(u32 i = 0;i < text.size();i++)
{
wchar_t c = text[i];
bool lineBreak=false;
if ( c == L'\r') // Windows breaks
{
lineBreak = true;
if ( text[i + 1] == L'\n') // Windows breaks
c = text[++i];
}
else if ( c == L'\n') // Unix breaks
{
lineBreak = true;
}
if (lineBreak)
{
offset.Y += MaxHeight;
offset.X = position.UpperLeftCorner.X;
if ( hcenter )
{
core::dimension2d<u32> lineDim = getDimension(text.c_str());
offset.X += (position.getWidth() - lineDim.Width) >> 1;
}
continue;
}
const int areaID = getAreaFromCharacter(c);
//std::cout << "Char " << c << " has area " << areaID << std::endl;
SFontArea& area = Areas[areaID];
offset.X += area.underhang;
if ( Invisible.findFirst ( c ) < 0 )
{
indices.push_back(area.spriteno);
offsets.push_back(offset);
}
offset.X += (area.width + area.overhang + GlobalKerningWidth) * m_scale;
}
//SpriteBank->draw2DSpriteBatch(indices, offsets, clip, color);
const int indiceAmount = indices.size();
core::array< SGUISprite >& sprites = SpriteBank->getSprites();
core::array< core::rect<s32> >& positions = SpriteBank->getPositions();
video::IVideoDriver* driver = GUIEngine::getDriver();
const int spriteAmount = sprites.size();
for (int n=0; n<indiceAmount; n++)
{
const int spriteID = indices[n];
if (spriteID < 0 || spriteID >= spriteAmount) continue;
assert(sprites[spriteID].Frames.size() > 0);
const int texID = sprites[spriteID].Frames[0].textureNumber;
core::rect<s32> source = positions[sprites[spriteID].Frames[0].rectNumber];
//std::cout << "Rendering " << source.UpperLeftCorner.X << ", " << source.UpperLeftCorner.Y << " to " <<
// offsets[n].X << ", " << offsets[n].Y << "; size = " << source.getWidth() << ", " << source.getHeight() << std::endl;
core::dimension2d<s32> size = source.getSize();
size.Width = (int)(size.Width * m_scale);
size.Height = (int)(size.Height * m_scale);
core::rect<s32> dest(offsets[n], size);
//std::cout << "source size = " << source.getWidth() << ", " << source.getHeight() << ", dest size = " << dest.getWidth() << ", " << dest.getHeight() << "; m_scale=" << m_scale << std::endl;
video::SColor colors[] = {color, color, color, color};
video::ITexture* texture = SpriteBank->getTexture(texID);
driver->draw2DImage(texture,
dest,
source,
clip,
colors, true);
}
}
//! Calculates the index of the character in the text which is on a specific position.
s32 ScalableFont::getCharacterFromPos(const wchar_t* text, s32 pixel_x) const
{
s32 x = 0;
s32 idx = 0;
while (text[idx])
{
const SFontArea& a = Areas[getAreaFromCharacter(text[idx])];
x += a.width + a.overhang + a.underhang + GlobalKerningWidth;
if (x >= pixel_x)
return idx;
++idx;
}
return -1;
}
IGUISpriteBank* ScalableFont::getSpriteBank() const
{
return SpriteBank;
}
} // end namespace gui
} // end namespace irr

120
src/guiengine/CGUIFont.h Normal file
View File

@ -0,0 +1,120 @@
// Copyright (C) 2002-2009 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef __C_GUI_FONT_H_INCLUDED__
#define __C_GUI_FONT_H_INCLUDED__
#include "IrrCompileConfig.h"
#include "IGUIFontBitmap.h"
#include "irrString.h"
#include "irrMap.h"
#include "IXMLReader.h"
#include "IReadFile.h"
#include "irrArray.h"
namespace irr
{
namespace video
{
class IVideoDriver;
class IImage;
}
namespace gui
{
class IGUIEnvironment;
class ScalableFont : public IGUIFontBitmap
{
float m_scale;
public:
//! constructor
ScalableFont(IGUIEnvironment* env, const io::path& filename);
//! destructor
virtual ~ScalableFont();
//! loads a font from a texture file
bool load(const io::path& filename);
//! loads a font from a texture file
bool load(io::IReadFile* file);
//! loads a font from an XML file
bool load(io::IXMLReader* xml);
//! draws an text and clips it to the specified rectangle if wanted
virtual void draw(const core::stringw& text, const core::rect<s32>& position,
video::SColor color, bool hcenter=false,
bool vcenter=false, const core::rect<s32>* clip=0);
//! returns the dimension of a text
virtual core::dimension2d<u32> getDimension(const wchar_t* text) const;
//! Calculates the index of the character in the text which is on a specific position.
virtual s32 getCharacterFromPos(const wchar_t* text, s32 pixel_x) const;
//! Returns the type of this font
virtual EGUI_FONT_TYPE getType() const { return EGFT_BITMAP; }
//! set an Pixel Offset on Drawing ( scale position on width )
virtual void setKerningWidth (s32 kerning);
virtual void setKerningHeight (s32 kerning);
//! set an Pixel Offset on Drawing ( scale position on width )
virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const;
virtual s32 getKerningHeight() const;
//! gets the sprite bank
virtual IGUISpriteBank* getSpriteBank() const;
//! returns the sprite number from a given character
virtual u32 getSpriteNoFromChar(const wchar_t *c) const;
virtual void setInvisibleCharacters( const wchar_t *s );
void setScale(const float scale);
float getScale() const { return m_scale; }
private:
struct SFontArea
{
SFontArea() : underhang(0), overhang(0), width(0), spriteno(0) {}
s32 underhang;
s32 overhang;
s32 width;
u32 spriteno;
};
//! load & prepare font from ITexture
bool loadTexture(video::IImage * image, const io::path& name);
void readPositions(video::IImage* texture, s32& lowerRightPositions);
s32 getAreaFromCharacter (const wchar_t c) const;
void setMaxHeight();
core::array<SFontArea> Areas;
core::map<wchar_t, s32> CharacterMap;
video::IVideoDriver* Driver;
IGUISpriteBank* SpriteBank;
IGUIEnvironment* Environment;
u32 WrongCharacter;
s32 MaxHeight;
s32 GlobalKerningWidth, GlobalKerningHeight;
core::stringw Invisible;
};
} // end namespace gui
} // end namespace irr
#endif // __C_GUI_FONT_H_INCLUDED__

View File

@ -23,6 +23,7 @@
#include "io/file_manager.hpp"
#include "input/input_manager.hpp"
#include "guiengine/CGUIFont.h"
#include "guiengine/event_handler.hpp"
#include "guiengine/modaldialog.hpp"
#include "guiengine/screen.hpp"
@ -41,6 +42,8 @@ namespace GUIEngine
IGUIEnvironment* g_env;
Skin* g_skin = NULL;
IGUIFont* g_font;
IGUIFont* g_title_font;
IrrlichtDevice* g_device;
IVideoDriver* g_driver;
Screen* g_current_screen = NULL;
@ -185,8 +188,19 @@ void init(IrrlichtDevice* device_a, IVideoDriver* driver_a, AbstractStateManager
g_skin = new Skin(g_env->getSkin());
g_env->setSkin(g_skin);
//g_skin = g_env->getSkin();
g_font = g_env->getFont( (file_manager->getGUIDir() + "/okolaks.xml").c_str() );
if (g_font) g_skin->setFont(g_font);
// TODO: adapt font size depending on resolution
ScalableFont* sfont = new ScalableFont(g_env, (file_manager->getGUIDir() + "/okolaks.xml").c_str());
g_font = sfont;
//g_font = g_env->getFont( (file_manager->getGUIDir() + "/okolaks.xml").c_str() );
ScalableFont* sfont2 = new ScalableFont(g_env, (file_manager->getGUIDir() + "/title_font.xml").c_str());
sfont2->setScale(0.3f);
sfont2->setKerningWidth(-18);
g_title_font = sfont2;
if (g_font != NULL) g_skin->setFont(g_font);
//g_skin->setFont(g_env->getBuiltInFont(), EGDF_TOOLTIP);

View File

@ -59,8 +59,9 @@ be clickable. PROP_ICON is mandatory for this component.
WTYPE_CHECKBOX "checkbox"
A checkbox. Not used at the moment.
WTYPE_LABEL "label"
WTYPE_LABEL "label" "header"
A plain label. Supports properties PROP_WORD_WRAP and PROP_TEXT_ALIGN.
The "Header" variant uses a bigger and more colourful font.
WTYPE_SPACER "spacer"
Some blank space; not visible on screen.
@ -235,6 +236,8 @@ namespace GUIEngine
extern irr::gui::IGUIEnvironment* g_env;
extern Skin* g_skin;
extern irr::gui::IGUIFont* g_font;
extern irr::gui::IGUIFont* g_title_font;
extern IrrlichtDevice* g_device;
extern irr::video::IVideoDriver* g_driver;
extern Screen* g_current_screen;
@ -246,6 +249,7 @@ namespace GUIEngine
inline irr::gui::IGUIEnvironment* getGUIEnv() { return Private::g_env; }
inline irr::video::IVideoDriver* getDriver() { return Private::g_driver; }
inline irr::gui::IGUIFont* getFont() { return Private::g_font; }
inline irr::gui::IGUIFont* getTitleFont() { return Private::g_title_font; }
inline Screen* getCurrentScreen() { return Private::g_current_screen; }
inline AbstractStateManager* getStateManager() { return Private::g_state_manager; }

View File

@ -119,6 +119,10 @@ void parseScreenFileDiv(irr::io::IrrXMLReader* xml, ptr_vector<Widget>& append_t
{
append_to.push_back(new LabelWidget());
}
else if (!strcmp("header", xml->getNodeName()))
{
append_to.push_back(new LabelWidget(true));
}
else if (!strcmp("spacer", xml->getNodeName()))
{
append_to.push_back(new Widget());

View File

@ -62,6 +62,7 @@ Widget::Widget(bool reserve_id)
h = -1;
id = -1;
m_element = NULL;
m_title_font = false;
m_type = WTYPE_NONE;
m_event_handler = NULL;
@ -284,11 +285,11 @@ void Widget::readCoords(Widget* parent)
}
}
// ---- if this widget has a label, get text length. this can helpful determine its optimal size
// ---- if this widget has a label, get text size. this can helpful determine its optimal size
int label_w = -1, label_h = -1;
if (m_text.size() > 0)
{
IGUIFont* font = GUIEngine::getFont();
IGUIFont* font = (m_title_font ? GUIEngine::getTitleFont() : GUIEngine::getFont());
core::dimension2d< u32 > dim = font->getDimension( m_text.c_str() );
label_w = dim.Width;
// FIXME - won't work with multiline labels. thus, for now, when multiple
@ -317,7 +318,7 @@ void Widget::readCoords(Widget* parent)
if(abs_h > -1) this->h = abs_h;
else if(percent_h > -1) this->h = parent_h*percent_h/100;
}
else if(texture_h > -1 && label_h > -1) this->h = texture_h + label_h;
else if(texture_h > -1 && label_h > -1) this->h = texture_h + label_h; // label + icon
else if(texture_h > -1) this->h = texture_h;
else if(label_h > -1) this->h = label_h;
}
@ -350,7 +351,6 @@ void Widget::readCoords(Widget* parent)
const int max_height = atoi( this->m_properties[PROP_MAX_HEIGHT].c_str() );
if(this->h > max_height) this->h = max_height;
}
}
void Widget::setParent(IGUIElement* parent)

View File

@ -100,6 +100,8 @@ namespace GUIEngine
friend class Skin;
friend class DynamicRibbonWidget;
/** When true, this widget shall use a bigger and more colourful font */
bool m_title_font;
/**
* Can be used in children to indicate whether a widget is selected or not

View File

@ -21,9 +21,10 @@ using namespace GUIEngine;
using namespace irr::core;
using namespace irr::gui;
LabelWidget::LabelWidget()
LabelWidget::LabelWidget(bool title)
{
m_type = WTYPE_LABEL;
m_title_font = title;
}
// -----------------------------------------------------------------------------
void LabelWidget::add()
@ -41,6 +42,12 @@ void LabelWidget::add()
m_element = irrwidget;
irrwidget->setTextAlignment( align, valign );
if (m_title_font)
{
irrwidget->setOverrideColor( video::SColor(255,255,255,255) );
irrwidget->setOverrideFont( GUIEngine::getTitleFont() );
}
id = m_element->getID();
//m_element->setTabOrder(id);
m_element->setTabStop(false);

View File

@ -31,7 +31,7 @@ namespace GUIEngine
class LabelWidget : public Widget
{
public:
LabelWidget();
LabelWidget(bool title=false);
virtual ~LabelWidget() {}
void add();

View File

@ -54,6 +54,7 @@
952A1554103F68D000B1895D /* profile_world.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 952A1552103F68D000B1895D /* profile_world.cpp */; };
953789730FC7829100DD1F8E /* graph_node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 953789720FC7829100DD1F8E /* graph_node.cpp */; };
953789820FC7831400DD1F8E /* quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 953789810FC7831400DD1F8E /* quad.cpp */; };
953C3CCA10CAF3EE0025F78A /* CGUIFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 953C3CC910CAF3EE0025F78A /* CGUIFont.cpp */; };
954E4C2D0FF98B6F0047FE3E /* animation_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 954E4C250FF98B6E0047FE3E /* animation_base.cpp */; };
954E4C2E0FF98B6F0047FE3E /* animation_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 954E4C270FF98B6E0047FE3E /* animation_manager.cpp */; };
954E4C2F0FF98B6F0047FE3E /* billboard_animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 954E4C290FF98B6E0047FE3E /* billboard_animation.cpp */; };
@ -399,6 +400,8 @@
953789720FC7829100DD1F8E /* graph_node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = graph_node.cpp; path = ../../tracks/graph_node.cpp; sourceTree = SOURCE_ROOT; };
953789800FC7831400DD1F8E /* quad.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = quad.hpp; path = ../../tracks/quad.hpp; sourceTree = SOURCE_ROOT; };
953789810FC7831400DD1F8E /* quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = quad.cpp; path = ../../tracks/quad.cpp; sourceTree = SOURCE_ROOT; };
953C3CC910CAF3EE0025F78A /* CGUIFont.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CGUIFont.cpp; path = ../../guiengine/CGUIFont.cpp; sourceTree = SOURCE_ROOT; };
953C3CCD10CAF4150025F78A /* CGUIFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CGUIFont.h; path = ../../guiengine/CGUIFont.h; sourceTree = SOURCE_ROOT; };
953EAAAD0F30A4220000D57D /* terrain_info.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = terrain_info.hpp; path = ../../tracks/terrain_info.hpp; sourceTree = SOURCE_ROOT; };
953EAAAE0F30A4220000D57D /* terrain_info.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = terrain_info.cpp; path = ../../tracks/terrain_info.cpp; sourceTree = SOURCE_ROOT; };
953EAAB00F30A4410000D57D /* triangle_mesh.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = triangle_mesh.hpp; path = ../../physics/triangle_mesh.hpp; sourceTree = SOURCE_ROOT; };
@ -1230,6 +1233,8 @@
958330B110122B4A00C5137E /* guiengine */ = {
isa = PBXGroup;
children = (
953C3CC910CAF3EE0025F78A /* CGUIFont.cpp */,
953C3CCD10CAF4150025F78A /* CGUIFont.h */,
9583319810123B0200C5137E /* abstract_state_manager.cpp */,
9583319710123B0200C5137E /* abstract_state_manager.hpp */,
958330B210122B4A00C5137E /* engine.cpp */,
@ -2558,6 +2563,7 @@
9522F1F1107961560067ECF5 /* options_screen_players.cpp in Sources */,
951B7D19108E52C900BC03AE /* challenges.cpp in Sources */,
95FB16DB10A7796800645974 /* new_ai.cpp in Sources */,
953C3CCA10CAF3EE0025F78A /* CGUIFont.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -148,6 +148,7 @@ namespace GUIEngine
// ---- section name
video::SColor color( 255 /* a */, 0 /* r */, 0 /* g */ , 75 /* b */ );
video::SColor white_color( 255, 255, 255, 255 );
// manage fade-in
if (before_first_elem)
@ -155,7 +156,7 @@ namespace GUIEngine
int alpha = 255 - (int)(time_before_next_step/TIME_SECTION_FADE * 255);
if(alpha < 0) alpha = 0;
else if(alpha > 255) alpha = 255;
color.setAlpha( alpha );
white_color.setAlpha( alpha );
}
// manage fade-out
else if (after_last_elem)
@ -163,10 +164,10 @@ namespace GUIEngine
int alpha = (int)(time_before_next_step/TIME_SECTION_FADE * 255);
if(alpha < 0) alpha = 0;
else if(alpha > 255) alpha = 255;
color.setAlpha( alpha );
white_color.setAlpha( alpha );
}
GUIEngine::getFont()->draw(m_sections[m_curr_section].m_name.c_str(), m_section_rect, color,
GUIEngine::getTitleFont()->draw(m_sections[m_curr_section].m_name.c_str(), m_section_rect, white_color,
true /* center h */, true /* center v */ );
// draw entries