2014-12-25 112 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

相關問題