如何根据语言检测要使用的正确字体
对于我的一个程序,我有一个数据库,其中包含 unicode 格式的街道名称(使用 GIS 内容)。用户选择他想看到的世界任何地方(使用openstreetmap、谷歌地图或其他什么),我的程序使用漂亮的字体显示所选的每条街道以显示它们的名称。正如您可能知道的那样,并非每种字体都可以显示非拉丁字符......这让我很头疼。我想知道如何告诉我的程序“如果这个词是用中文写的,那么使用中文字体”。
编辑:我忘了提及我想使用非标准字体。 Arial、Courier 和其他一些可以显示非拉丁单词,但我想使用其他字体(我有一种特定的中文字体,另一种用于日语,另一种用于阿拉伯语......)。我只需要知道根据我想写的单词选择什么字体即可。
For a program of mine I have a database full of street name (using GIS stuff) in unicode. The user selects any part of the world he wants to see (using openstreetmap, google maps or whatever) and my program displays every streets selected using a nice font to show their names. As you may know not every font can display non latin characters... and it gives me headaches. I wonder how to tell my program "if this word is written in chinese, then use a chinese font".
EDIT: I forgot to mention that I want to use non-standard fonts. Arial, Courier and some other can display non-latin words, but I want to use other fonts (I have a specific font for chinese, another one for japanese, another one for arabic...). I just have to know what font to chose depending of the word I want to write.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要有关文本语言的信息。
当您决定想要什么字体时,您就可以进行从语言到字体的映射。
如果您尝试自动执行此操作,则不会起作用。即使对于相同的字符,日语、繁体中文和简体中文的字体看起来也不同。它们可能是可以理解的,但是本地人可以告诉(好吧,抱怨)字体是错误的。
另外,如果你用算法做任何事情,就没有办法考虑审美部分(例如你不喜欢 Arial :-)
You need information about the language of the text.
And when you decide what fonts you want, you do a mapping from language to font.
If you try to do it automatically, it does not work. The fonts for Japanese, Chinese Traditional, and Chinese Simplified look differently even for the same character. They might be inteligible, but a native would be able to tell (ok, complain) that the font is wrong.
Plus, if you do anything algorithmically, there is no way to consider the estethic part (for instance the fact that you don't like Arial :-)
使用 utf-8 文本和具有定义的每个可能字符的字形的字体,例如 Windows 中的 Arial/Verdana。这绕过了整个检测问题。一种字体就能搞定一切。
Use utf-8 text and a font that has glyphs for every possible character defined, like Arial/Verdana in Windows. That bypasses the entire detection problem. One font will handle everything.