2014-12-25 66 views
1

想象一下,你想设计一个向伊朗人学习英语的网站(波斯语(波斯语))。英语和波斯语(波斯语)在字母表中没有任何相似之处,因为波斯语是左向右,英语是左向右,完全不同。我没有找到任何标签为所有英文单词设置所有波斯语(波斯语)单词和其他字体的一种字体。例如为波斯语设置B-Nazanin,并自动设置Times New Roman for English,无需每次为每个单词定义字体。只需定义一次这些字体。我们可以做什么 ? thanx如何使用两种不同的语言,如英语和波斯语(波斯语)?

+1

查看http://www.w3.org/International/questions/qa-css-lang – danielnixon

+1

是什么让你觉得你需要设置不同的字体,什么让你觉得jquery是这里最重要的东西(第一个问题的标签)? –

回答

0

使用B-Nazanin或其他波斯语内容和使用Open sans为英语contect。

如果你想设置B-nazanin波斯,并设置open sans英语,试试这个代码,CSS:

body{ 
    font-family: "Open sans","B-nazanin"; 
} 
+1

我想为所有英文单词使用Times New Roman,并对所有波斯语单词使用B-Nazanin。你说的是另一种字体,当浏览器没有第一个,使用第二个...... –

6

一个可能的选择是给一个lang="fa-IR"属性/值对<html>或任何其他元素在网站以波斯语显示时的文件内。

因此,您可以使用[lang|="fa"]选择器覆盖CSS声明。

例如:

[lang|="fa"] p { font-family: "B-Nazanin"; }
<html lang="fa-IR"> 
 
    <p> سلام دنیا </p> 
 
</html>

或者:

p[lang|="fa"] { font-family: "B-Nazanin"; }
<p>Hello World!</p> 
 
<p lang="fa-IR">سلام دنیا!</p>

+0

没错。原谅我:)我认为我的问题是无法回答的:)我想我应该忘记:) –

+1

@MostafaEslami我不推荐这种方式,但假设您使用的是JavaScript,可以通过正则表达式匹配波斯语内容,以便他们可以包裹一个适当的包装元素具有特定的类名称或任何以便将您想要的样式应用于它们。 –

+0

tnx。这也是一种方式。我应该测试... –

2

使用样式内容由HTML语言是使用:郎选择在你的CSS样式表中。例如:

:lang(ta) { 
    font-family: Latha, "Tamil MN", serif; 
    font-size: 120%; 
    } 

不要忘记使用郎在你的HTML代码

<p lang="en">Ceci est un paragraphe.</p> 
+0

这是最好的答案。不管怎样,OP应该已经在'html'元素上使用'lang'了。见http://www.w3.org/TR/WCAG20-TECHS/H57.html – danielnixon

+0

这是正确的。但是我应该如何为两种不同的语言定义两种字体? –

+0

当内容混合英语和波斯语时,他为什么要包含泰米尔语的代码?在标记中没有使用相应的属性时,使用语言选择器是毫无意义的。 –

0

如果我理解你的问题正确,你将在一个网站上混合波斯语和英语。

指定两个类,可能是“farsi”和“english”,并带有适当的font-family声明。然后将波斯语文本放入<div class="farsi">,并将英文放入<div class="english">

编辑为解决混合语言:您将<div>围绕主要语言编写,并使用<span>处理其他语言的文字。

我不认为有一种简单的方法来精细混合语言与不同的字母,甚至写作方向。也许你可以在你的HTML组合工具中使用宏来完成添加必要的标签。

+0

。但问题是我有很多混合。例如: 波斯语波斯语的波斯语波斯语英语,波斯语,波斯语英语,波斯语,波斯语英语,波斯语,波斯语英语波斯语...... 我应该做重复的工作中好几次,我将死去:) –

+0

''

farsi farsi farsi farsi English farsi farsi English
我会寻找一种自动生成方式来生成''标签。 –

+0

我不想做重复的工作,但你强调要做:)我了解到,我不应该做重复的工作,因为我问这个问题... –

1

如果你真的想使用两个不同的字体为两种不同的语言,你的选择是:

1)使用一些标记的语言进行了区分。这可能是class属性,或者(更符合逻辑,但稍有限制的浏览器支持)lang属性。当然,你会用这个频率较低的语言。当然这是很多工作。根据内容生成系统的不同,它可能会或可能不会被自动化。

2)选择字体,以便主字体不包含其他语言字符的字形。例如,如果您设置* { font-family: foo, bar }foo包含拉丁字母,但不包含阿拉伯字符,则foo将用于英语,bar用于波斯语。标点符号仍然是个问题。更重要的是,它很难找到这样的字体。

3)使用通过Unicode范围选择字体系列的CSS代码。我不会详细讨论,因为这种方法对浏览器的支持太有限了。

但是,您似乎在尝试创建问题而不是解决问题。按照印刷原则,如果可能的话,复制文本应使用相同的字体。您应该选择适合英语和波斯语的a字体,或者更好的还是这种字体的列表(因为所有计算机上都没有可用的字体),或者是可下载的那种字体。如果做不到这一点,你可能会选择两种字体或两种精心选择的字体列表,这样你可以列出它们两个或全部,浏览器将以一种自然的方式使用它们:对于每个字符,使用列表中包含的第一个字体它。

+0

感谢分享,我不知道['unicode-range'](http://www.w3.org/TR/css3-fonts/#descdef-unicode - 范围),它看起来很有用。只是感到惊讶,IE9支持它。 –

+0

问题是我没有找到适合每种语言的合适的字体。无论如何tnx指导...... –

+0

出于好奇,哪些用户代理支持'class'而不是'lang'? – danielnixon

相关问题