Basic changes to support multiple charsets in the future
|
@ -24,6 +24,7 @@ CMakeLists.txt.user*
|
||||||
*.log
|
*.log
|
||||||
*.bak
|
*.bak
|
||||||
*.swp
|
*.swp
|
||||||
|
*.pic
|
||||||
.lvimrc
|
.lvimrc
|
||||||
.clang_complete
|
.clang_complete
|
||||||
config.otml
|
config.otml
|
||||||
|
@ -33,4 +34,4 @@ config.otml
|
||||||
otclient.map
|
otclient.map
|
||||||
otclient.layout
|
otclient.layout
|
||||||
LOCALTODO
|
LOCALTODO
|
||||||
tags
|
tags
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
locale = {
|
locale = {
|
||||||
name = "en",
|
name = "en",
|
||||||
|
charset = "cp1252",
|
||||||
languageName = "English",
|
languageName = "English",
|
||||||
|
|
||||||
-- translations are not needed because everything is already in english
|
-- translations are not needed because everything is already in english
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
locale = {
|
locale = {
|
||||||
name = "es",
|
name = "es",
|
||||||
|
charset = "cp1252",
|
||||||
languageName = "Español",
|
languageName = "Español",
|
||||||
|
|
||||||
translation = {
|
translation = {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
locale = {
|
locale = {
|
||||||
name = "pl",
|
name = "pl",
|
||||||
|
charset = "cp1250",
|
||||||
languageName = "Polski",
|
languageName = "Polski",
|
||||||
|
|
||||||
translation = {
|
translation = {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
locale = {
|
locale = {
|
||||||
name = "pt",
|
name = "pt",
|
||||||
|
charset = "cp1252",
|
||||||
languageName = "Português",
|
languageName = "Português",
|
||||||
|
|
||||||
-- As traduções devem vir sempre em ordem alfabética.
|
-- As traduções devem vir sempre em ordem alfabética.
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
locale = {
|
locale = {
|
||||||
name = "sv",
|
name = "sv",
|
||||||
|
charset = "cp1252",
|
||||||
languageName = "Svenska",
|
languageName = "Svenska",
|
||||||
|
|
||||||
translation = {
|
translation = {
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
Font
|
Font
|
||||||
name: terminus-14px-bold
|
name: terminus-14px-bold
|
||||||
|
texture: terminus-14px-bold.png
|
||||||
height: 16
|
height: 16
|
||||||
y-offset: 2
|
y-offset: 2
|
||||||
texture: terminus-14px-bold.png
|
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
fixed-glyph-width: 8
|
fixed-glyph-width: 8
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.8 KiB |
|
@ -1,8 +1,6 @@
|
||||||
Font
|
Font
|
||||||
name: verdana-11px-antialised
|
name: verdana-11px-antialised
|
||||||
texture: verdana-11px-antialised.png
|
texture: verdana-11px-antialised_cp1252.png
|
||||||
height: 14
|
height: 14
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
|
space-width: 4
|
||||||
glyph-widths:
|
|
||||||
32: 4
|
|
||||||
|
|
Before Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 9.8 KiB |
|
@ -1,8 +1,6 @@
|
||||||
Font
|
Font
|
||||||
name: verdana-11px-monochrome
|
name: verdana-11px-monochrome
|
||||||
texture: verdana-11px-monochrome.png
|
texture: verdana-11px-monochrome_cp1252.png
|
||||||
height: 14
|
height: 14
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
|
space-width: 4
|
||||||
glyph-widths:
|
|
||||||
32: 2
|
|
||||||
|
|
Before Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 3.6 KiB |
|
@ -1,232 +1,8 @@
|
||||||
Font
|
Font
|
||||||
name: verdana-11px-rounded
|
name: verdana-11px-rounded
|
||||||
texture: verdana-11px-rounded.png
|
texture: verdana-11px-rounded_cp1252.png
|
||||||
height: 14
|
height: 16
|
||||||
glyph-size: 16 16
|
glyph-size: 16 16
|
||||||
spacing: -1 0
|
y-offset: -2
|
||||||
|
spacing: -1 -3
|
||||||
glyph-widths:
|
space-width: 4
|
||||||
32: 4
|
|
||||||
33: 4
|
|
||||||
34: 7
|
|
||||||
35: 9
|
|
||||||
36: 8
|
|
||||||
37: 10
|
|
||||||
38: 10
|
|
||||||
39: 4
|
|
||||||
40: 6
|
|
||||||
41: 6
|
|
||||||
42: 8
|
|
||||||
43: 9
|
|
||||||
44: 4
|
|
||||||
45: 7
|
|
||||||
46: 4
|
|
||||||
47: 8
|
|
||||||
48: 8
|
|
||||||
49: 6
|
|
||||||
50: 8
|
|
||||||
51: 8
|
|
||||||
52: 8
|
|
||||||
53: 8
|
|
||||||
54: 8
|
|
||||||
55: 8
|
|
||||||
56: 8
|
|
||||||
57: 8
|
|
||||||
58: 5
|
|
||||||
59: 5
|
|
||||||
60: 10
|
|
||||||
61: 10
|
|
||||||
62: 10
|
|
||||||
63: 7
|
|
||||||
64: 10
|
|
||||||
65: 9
|
|
||||||
66: 8
|
|
||||||
67: 8
|
|
||||||
68: 9
|
|
||||||
69: 8
|
|
||||||
70: 8
|
|
||||||
71: 9
|
|
||||||
72: 9
|
|
||||||
73: 6
|
|
||||||
74: 7
|
|
||||||
75: 8
|
|
||||||
76: 8
|
|
||||||
77: 10
|
|
||||||
78: 9
|
|
||||||
79: 9
|
|
||||||
80: 8
|
|
||||||
81: 9
|
|
||||||
82: 9
|
|
||||||
83: 8
|
|
||||||
84: 10
|
|
||||||
85: 9
|
|
||||||
86: 8
|
|
||||||
87: 10
|
|
||||||
88: 8
|
|
||||||
89: 8
|
|
||||||
90: 8
|
|
||||||
91: 6
|
|
||||||
92: 8
|
|
||||||
93: 6
|
|
||||||
94: 11
|
|
||||||
95: 9
|
|
||||||
96: 7
|
|
||||||
97: 8
|
|
||||||
98: 8
|
|
||||||
99: 7
|
|
||||||
100: 8
|
|
||||||
101: 8
|
|
||||||
102: 7
|
|
||||||
103: 8
|
|
||||||
104: 8
|
|
||||||
105: 4
|
|
||||||
106: 6
|
|
||||||
107: 8
|
|
||||||
108: 4
|
|
||||||
109: 10
|
|
||||||
110: 8
|
|
||||||
111: 8
|
|
||||||
112: 8
|
|
||||||
113: 8
|
|
||||||
114: 7
|
|
||||||
115: 7
|
|
||||||
116: 7
|
|
||||||
117: 8
|
|
||||||
118: 8
|
|
||||||
119: 10
|
|
||||||
120: 8
|
|
||||||
121: 8
|
|
||||||
122: 7
|
|
||||||
123: 8
|
|
||||||
124: 5
|
|
||||||
125: 8
|
|
||||||
126: 9
|
|
||||||
127: 13
|
|
||||||
128: 8
|
|
||||||
129: 13
|
|
||||||
130: 4
|
|
||||||
131: 8
|
|
||||||
132: 6
|
|
||||||
133: 13
|
|
||||||
134: 8
|
|
||||||
135: 8
|
|
||||||
136: 7
|
|
||||||
137: 20
|
|
||||||
138: 8
|
|
||||||
139: 6
|
|
||||||
140: 13
|
|
||||||
141: 13
|
|
||||||
142: 7
|
|
||||||
143: 13
|
|
||||||
144: 13
|
|
||||||
145: 4
|
|
||||||
146: 4
|
|
||||||
147: 6
|
|
||||||
148: 6
|
|
||||||
149: 8
|
|
||||||
150: 8
|
|
||||||
151: 12
|
|
||||||
152: 7
|
|
||||||
153: 11
|
|
||||||
154: 7
|
|
||||||
155: 6
|
|
||||||
156: 13
|
|
||||||
157: 13
|
|
||||||
158: 7
|
|
||||||
159: 9
|
|
||||||
160: 4
|
|
||||||
161: 5
|
|
||||||
162: 8
|
|
||||||
163: 8
|
|
||||||
164: 8
|
|
||||||
165: 8
|
|
||||||
166: 7
|
|
||||||
167: 8
|
|
||||||
168: 7
|
|
||||||
169: 12
|
|
||||||
170: 7
|
|
||||||
171: 9
|
|
||||||
172: 11
|
|
||||||
173: 6
|
|
||||||
174: 12
|
|
||||||
175: 8
|
|
||||||
176: 7
|
|
||||||
177: 11
|
|
||||||
178: 7
|
|
||||||
179: 7
|
|
||||||
180: 7
|
|
||||||
181: 8
|
|
||||||
182: 8
|
|
||||||
183: 5
|
|
||||||
184: 7
|
|
||||||
185: 7
|
|
||||||
186: 7
|
|
||||||
187: 9
|
|
||||||
188: 15
|
|
||||||
189: 15
|
|
||||||
190: 15
|
|
||||||
191: 7
|
|
||||||
192: 10
|
|
||||||
193: 10
|
|
||||||
194: 10
|
|
||||||
195: 10
|
|
||||||
196: 10
|
|
||||||
197: 10
|
|
||||||
198: 13
|
|
||||||
199: 8
|
|
||||||
200: 7
|
|
||||||
201: 7
|
|
||||||
202: 7
|
|
||||||
203: 7
|
|
||||||
204: 5
|
|
||||||
205: 5
|
|
||||||
206: 5
|
|
||||||
207: 5
|
|
||||||
208: 10
|
|
||||||
209: 8
|
|
||||||
210: 9
|
|
||||||
211: 9
|
|
||||||
212: 9
|
|
||||||
213: 9
|
|
||||||
214: 9
|
|
||||||
215: 11
|
|
||||||
216: 9
|
|
||||||
217: 8
|
|
||||||
218: 9
|
|
||||||
219: 8
|
|
||||||
220: 8
|
|
||||||
221: 9
|
|
||||||
222: 9
|
|
||||||
223: 8
|
|
||||||
224: 8
|
|
||||||
225: 8
|
|
||||||
226: 8
|
|
||||||
227: 8
|
|
||||||
228: 8
|
|
||||||
229: 8
|
|
||||||
230: 12
|
|
||||||
231: 6
|
|
||||||
232: 8
|
|
||||||
233: 8
|
|
||||||
234: 8
|
|
||||||
235: 8
|
|
||||||
236: 5
|
|
||||||
237: 5
|
|
||||||
238: 3
|
|
||||||
239: 3
|
|
||||||
240: 8
|
|
||||||
241: 8
|
|
||||||
242: 8
|
|
||||||
243: 8
|
|
||||||
244: 8
|
|
||||||
245: 8
|
|
||||||
246: 8
|
|
||||||
247: 11
|
|
||||||
248: 8
|
|
||||||
249: 8
|
|
||||||
250: 8
|
|
||||||
251: 8
|
|
||||||
252: 8
|
|
||||||
253: 8
|
|
||||||
254: 8
|
|
||||||
255: 8
|
|
||||||
|
|
Before Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 9.7 KiB |
|
@ -53,6 +53,7 @@ Application::Application()
|
||||||
m_appName = "application";
|
m_appName = "application";
|
||||||
m_appCompactName = "app";
|
m_appCompactName = "app";
|
||||||
m_appVersion = "none";
|
m_appVersion = "none";
|
||||||
|
m_charset = "cp1252";
|
||||||
m_stopping = false;
|
m_stopping = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,7 @@ public:
|
||||||
const std::string& getCompactName() { return m_appCompactName; }
|
const std::string& getCompactName() { return m_appCompactName; }
|
||||||
const std::string& getVersion() { return m_appVersion; }
|
const std::string& getVersion() { return m_appVersion; }
|
||||||
|
|
||||||
|
std::string getCharset() { return m_charset; }
|
||||||
std::string getBuildCompiler() { return BUILD_COMPILER; }
|
std::string getBuildCompiler() { return BUILD_COMPILER; }
|
||||||
std::string getBuildDate();
|
std::string getBuildDate();
|
||||||
std::string getBuildRevision() { return BUILD_REVISION; }
|
std::string getBuildRevision() { return BUILD_REVISION; }
|
||||||
|
@ -64,6 +65,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
void registerLuaFunctions();
|
void registerLuaFunctions();
|
||||||
|
|
||||||
|
std::string m_charset;
|
||||||
std::string m_appName;
|
std::string m_appName;
|
||||||
std::string m_appCompactName;
|
std::string m_appCompactName;
|
||||||
std::string m_appVersion;
|
std::string m_appVersion;
|
||||||
|
|
|
@ -36,6 +36,7 @@ void BitmapFont::load(const OTMLNodePtr& fontNode)
|
||||||
m_yOffset = fontNode->valueAt("y-offset", 0);
|
m_yOffset = fontNode->valueAt("y-offset", 0);
|
||||||
m_firstGlyph = fontNode->valueAt("first-glyph", 32);
|
m_firstGlyph = fontNode->valueAt("first-glyph", 32);
|
||||||
m_glyphSpacing = fontNode->valueAt("spacing", Size(0,0));
|
m_glyphSpacing = fontNode->valueAt("spacing", Size(0,0));
|
||||||
|
int spaceWidth = fontNode->valueAt("space-width", glyphSize.width());
|
||||||
|
|
||||||
// load font texture
|
// load font texture
|
||||||
m_texture = g_textures.getTexture(textureFile);
|
m_texture = g_textures.getTexture(textureFile);
|
||||||
|
@ -47,14 +48,21 @@ void BitmapFont::load(const OTMLNodePtr& fontNode)
|
||||||
calculateGlyphsWidthsAutomatically(Image::load(textureFile), glyphSize);
|
calculateGlyphsWidthsAutomatically(Image::load(textureFile), glyphSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 32 and 160 are spaces ( )
|
||||||
|
m_glyphsSize[32].setWidth(spaceWidth);
|
||||||
|
m_glyphsSize[160].setWidth(spaceWidth);
|
||||||
|
|
||||||
// new line actually has a size that will be useful in multiline algorithm
|
// new line actually has a size that will be useful in multiline algorithm
|
||||||
m_glyphsSize[(uchar)'\n'] = Size(1, m_glyphHeight);
|
m_glyphsSize[(uchar)'\n'] = Size(1, m_glyphHeight);
|
||||||
|
|
||||||
// read custom widths
|
// read custom widths
|
||||||
|
/*
|
||||||
if(OTMLNodePtr node = fontNode->get("glyph-widths")) {
|
if(OTMLNodePtr node = fontNode->get("glyph-widths")) {
|
||||||
for(const OTMLNodePtr& child : node->children())
|
for(const OTMLNodePtr& child : node->children())
|
||||||
m_glyphsSize[stdext::safe_cast<int>(child->tag())].setWidth(child->value<int>());
|
m_glyphsSize[stdext::safe_cast<int>(child->tag())].setWidth(child->value<int>());
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
// calculate glyphs texture coords
|
// calculate glyphs texture coords
|
||||||
int numHorizontalGlyphs = m_texture->getSize().width() / glyphSize.width();
|
int numHorizontalGlyphs = m_texture->getSize().width() / glyphSize.width();
|
||||||
|
@ -268,12 +276,8 @@ void BitmapFont::calculateGlyphsWidthsAutomatically(const ImagePtr& image, const
|
||||||
if(texturePixels[(y * image->getSize().width() * 4) + (x*4) + 3] != 0)
|
if(texturePixels[(y * image->getSize().width() * 4) + (x*4) + 3] != 0)
|
||||||
filledPixels++;
|
filledPixels++;
|
||||||
}
|
}
|
||||||
if(filledPixels > 0) {
|
if(filledPixels > 0)
|
||||||
width = x - glyphCoords.left() + 1;
|
width = x - glyphCoords.left() + 1;
|
||||||
width += m_glyphSpacing.width();
|
|
||||||
if(m_glyphHeight >= 16 && filledPixels >= m_glyphHeight/3)
|
|
||||||
width += 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// store glyph size
|
// store glyph size
|
||||||
m_glyphsSize[glyph].resize(width, m_glyphHeight);
|
m_glyphsSize[glyph].resize(width, m_glyphHeight);
|
||||||
|
|