我很少看到有人讨论这个问题。我正在开发一款支持多语言的软件,因此我需要使用兼容Unicode的字体,对吗?我可能在哪里找到这样的字体,并且如何确定它们确实支持中文、韩文、日文或其他存在的语言呢?
很遗憾,您不能使用在互联网上找到的漂亮字体,因为它们大多只支持ASCII。
我很少看到有人讨论这个问题。我正在开发一款支持多语言的软件,因此我需要使用兼容Unicode的字体,对吗?我可能在哪里找到这样的字体,并且如何确定它们确实支持中文、韩文、日文或其他存在的语言呢?
很遗憾,您不能使用在互联网上找到的漂亮字体,因为它们大多只支持ASCII。
以下是我收藏的Unicode/字体书签
http://en.wikipedia.org/wiki/Category:Free_software_Unicode_typefaces
http://en.wikipedia.org/wiki/Unicode_typefaces
http://unifoundry.com/unifont.html
http://www.fileformat.info/info/unicode/font/index.htm
http://www.alanwood.net/unicode/fontsbyrange.html
http://www.alanwood.net/unicode/fonts.html
请注意:不要期望找到一种支持繁体中文、简体中文和日语的字体。
由于相同的Unicode代码点存在字形差异,因此本地用户会立即发现您未使用适合他们语言的正确字体。
对于Web应用程序,最好提供字体列表,并在列表中包括典型的Windows字体、典型的Mac字体和通用字体(如“衬线”)。
使用适当的lang标签标记html页面(或段落)将有助于一些(更智能的)浏览器在未安装特定字体时选择正确的字体。
http://www.alanwood.net/unicode/fonts.html
艾伦·伍德的网站有许多Unicode字体。每个字体旁边都有一份列表,解释了它支持哪些语言。
另一个很棒的网站是Unifont的字体指南。只需在谷歌上搜索即可找到,我还没有链接它的声誉。在那里,只需点击站点顶部的大陆选项卡,即可查看包括来自这些国家的语言的字体。
@font-face {
font-family: 'myfont';
src:url('fonts/myfont.eot?-td2xif');
src:url('fonts/myfont.eot?#iefix-td2xif') format('embedded-opentype'),
url('fonts/myfont.woff?-td2xif') format('woff'),
url('fonts/myfont.ttf?-td2xif') format('truetype'),
url('fonts/myfont.svg?-td2xif#myfont') format('svg');
// Different URLs are required for optimal browser support
// Make sure to :
// 1) replace the URLs with your font's URLs
// 2) replace `#myfont` with the name of your font
font-weight: normal; // To avoid the font inherits boldness
font-style: normal; // To avoid font inherits obliqueness or italic
}
.icon {
font-family: 'myfont', Verdana, Arial, sans-serif; // Use regular fonts as fallback
speak: none; // To avoid screen readers trying to read the content
font-style: normal; // To avoid font inherits obliqueness or italic
font-weight: normal; // To avoid the font inherits boldness
font-variant: normal; // To avoid the font inherits small-caps
text-transform: none; // To avoid the font inherits capitalization/uppercase/lowercase
line-height: 1; // To avoid the font inherits an undesired line-height
-webkit-font-smoothing: antialiased; // For improved readability on Webkit
-moz-osx-font-smoothing: grayscale; // For improved readability on OSX + Mozilla
}
<!-- Method 1 -->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family for an entire HTML element -->
<!-- Define your icon fonts in your CSS font-family after your regular fonts -->
<!-- This means that regular characters are default. Icons are a fallback -->
<!-- Use UTF-8 characters directly in your HTML for improved human readability -->
<div class="rate"><p>I rate this movie ★★★★☆!!</p></div>
<!-- Method 2 -->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family for an entire HTML element -->
<!-- Define your icon fonts in your CSS font-family after your regular fonts -->
<!-- This means that regular characters are default. Icons are a fallback -->
<!-- Use entity codes in your HTML when UTF-8 support is uncertain -->
<div class="rate"><p>I rate this movie ★★★★☆!!</p></div>
<!-- Method 3 -->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family only for the icons but not the HTML elements that include them -->
<!-- Define your icon fonts in your CSS font-family before your regular fonts -->
<!-- This means that icons are default. Regular characters are a fallback -->
<!-- Use UTF-8 characters directly in your HTML for improved human readability -->
<p>I rate this movie <span class="icon">★★★★☆</span>!!</p>
<!-- Method 4 -->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family only for the icons but not the HTML elements that include them -->
<!-- Define your icon fonts in your CSS font-family before your regular fonts -->
<!-- This means that icons are default. Regular characters are a fallback -->
<!-- Use entity codes in your HTML when UTF-8 support is uncertain -->
<p>I rate this movie <span class="icon">★★★★☆</span>!!</p>
<!-- Method 5 -->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family only for the icons and use a separate HTML tag for each icon -->
<!-- Define your icon fonts in your CSS font-family before your regular fonts -->
<!-- This means that icons are default. Regular characters are a fallback -->
<!-- Use UTF-8 characters directly in your HTML for improved human readability -->
<p>I rate this movie
<span class="icon">★</span>
<span class="icon">★</span>
<span class="icon">★</span>
<span class="icon">★</span>
<span class="icon">☆</span>
!!
</p>
<!-- Method 6 -->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family only for the icons and use a separate HTML tag for each icon -->
<!-- Define your icon fonts in your CSS font-family before your regular fonts -->
<!-- This means that icons are default. Regular characters are a fallback -->
<!-- Use entity codes in your HTML when UTF-8 support is uncertain -->
<p>I rate this movie
<span class="icon">★</span>
<span class="icon">★</span>
<span class="icon">★</span>
<span class="icon">★</span>
<span class="icon">☆</span>
!!
</p>
<!-- Method 7-->
<!--- * * * * * * * * * * * * -->
<!-- Set a font-family only for the icons and use a separate HTML tag for each icon -->
<!-- Define your icon fonts in your CSS font-family before your regular fonts -->
<!-- This means that icons are default. Regular characters are a fallback -->
<!-- Use the 'content' style rule with a ':before selector' in your CSS -->
<p>I rate this movie
<span class="icon icon-star"></span>
<span class="icon icon-star"></span>
<span class="icon icon-star"></span>
<span class="icon icon-star"></span>
<span class="icon icon-star-unfilled"></span>
!!
</p>
.icon-star:before {
content: "\2605";
}
.icon-star-unfilled:before {
content: "\2606";
}
像Iconic、Font Awesome或Glyphicons这样的图标字体通常都使用方法7。这样做是为了避免您不得不从作弊表中复制粘贴特殊字符或被迫使用HTML实体。
然而,这种方法有几个缺点。首先,它需要支持:before
CSS选择器和UNICODE字符的转义序列。IE6-7和某些版本的Webkit都不提供此支持。
另一个缺点是,您必须为每个图标使用单独的HTML标记,每个标记对应于图标字体中的一个字符。与其他方法不同,使用方法7无法在一个HTML标记中显示多个图标。
其他方法也有它们自己的缺点。方法1、3和5需要你从作弊表中复制粘贴字符或使用手段将字符本身放在你的代码中。你的代码编辑器可能无法显示该字符,或者如果图标字体使用非标准映射该字体,则可能显示与图标字体中不同的字符。head
中添加 meta标签可以确保这一点。