Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 对文本进行样式化以使用不同语言的不同字体?_Html_Css_Internationalization - Fatal编程技术网

Html 对文本进行样式化以使用不同语言的不同字体?

Html 对文本进行样式化以使用不同语言的不同字体?,html,css,internationalization,Html,Css,Internationalization,有没有一种方法可以将HTML页面上的文本样式化,使其自动为不同的语言使用不同的字体?我的网站使用英语和阿拉伯语。我想根据所显示的语言使用不同的字体 假设我有这样一段话: body { font-family:Palatino,serif; } :lang(ar) { font-family: "Traditional Arabic",serif; } @font-face { font-family: 'your_arabic_font'; src: url('../font

有没有一种方法可以将HTML页面上的文本样式化,使其自动为不同的语言使用不同的字体?我的网站使用英语和阿拉伯语。我想根据所显示的语言使用不同的字体

假设我有这样一段话:

body {
  font-family:Palatino,serif;
}

:lang(ar) {
  font-family: "Traditional Arabic",serif;
}
@font-face {
  font-family: 'your_arabic_font';
  src: url('../fonts/arabic_font.ttf');
}

@font-face {
  font-family: 'your_english_font';
  src: url('../fonts/english_font.ttf') format("opentype");
}

p {
  font-family: 'your_english_font', fallback, 'your_arabic_font';
}
在2014年7 7月月月日日日日日日日日日日日日日方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方这是一个很好的例子。前一句是阿拉伯语,但这一句是英语

我想用X字体呈现阿拉伯语句子,但用Y字体呈现英语句子

有没有一种方法可以做到这一点,而不必根据服务器端对其语言的了解,手动为每组文本提供不同的CSS样式,即将每个句子包装在不同的CSS类中


谢谢

如果您使用UTF-8编码,则内容应采用正确的字符编码,但仍将使用相同的字体

您需要为包含阿拉伯语的元素分配一个CSS类。CSS本身无法检测到这一点


您可以使用JavaScript在加载时执行此任务,即检查元素并确定使用的字符范围。

如果不在标记级别按语言区分文本,则无法为不同的语言设置不同的字体。您通常会将
标记与
class
属性或
lang
属性一起使用,或者两者都使用。
lang
属性是合乎逻辑的选择,而当使用
class
时,样式设计的工作更加可靠(因为所有启用CSS的浏览器都支持
class
选择器)

请注意,您可能还需要将此类标记用于其他目的。对于以英语为主的页面上的阿拉伯语文本,通常最好使用
bdi
标记和
lang=ar
dir=rtl
属性以及CSS中的
bdi{unicode bidi:embed}
来处理方向性。(在您的邮件中,由于方向性问题,阿拉伯语文本的句号在开头(即在右侧)放错了位置。)

可以使用运行某种语言猜测程序并相应修改DOM的客户端代码,但这是不可靠的,而且有些复杂


通常,文档中的所有复制文本都应使用相同的字体。这可能很难处理(没有一种真正包罗万象的字体可以成功地在网页上使用),有些语言在实践中可能需要特殊的字体。但是有几种合理的字体可以同时使用英语和阿拉伯语。例如,Jukka是对的,你不能自动区分不同的语言。您可能需要在适当的地方设置lang属性。您有以下选择:

  • 使用CSS2:lang伪选择器
  • 使用CSS3:ltr或:rtl伪选择器根据文本方向性设置字体(实际上这不是最好的想法)
  • 使用CSS3:脚本伪选择器。据我所见,实际上,你可能正在寻找这个
第一个解决方案的代码段如下所示:

body {
  font-family:Palatino,serif;
}

:lang(ar) {
  font-family: "Traditional Arabic",serif;
}
@font-face {
  font-family: 'your_arabic_font';
  src: url('../fonts/arabic_font.ttf');
}

@font-face {
  font-family: 'your_english_font';
  src: url('../fonts/english_font.ttf') format("opentype");
}

p {
  font-family: 'your_english_font', fallback, 'your_arabic_font';
}
对于第二种选择,我已经说过这不是一个好主意。事实并非如此,因为许多语言都是从左到右或从右到左书写的。您肯定不想在希伯来文文本中使用“传统阿拉伯语”字体。我提到了这个选项,因为它可以帮助您解决其他问题

最后一点:

:script(Arab) {
  font-family: "Traditional Arabic",serif;
}
外部链接
  • from——这就是这些代码片段的来源(我可以轻松地自己创建它们,但决定咨询专家)

假设其中一种语言不包含另一种语言的字形,您应该能够使用字体系列回退。非英语字体有时包括英语字形,因此将英语设置为主要语言,阿拉伯语设置为备用语言。当文本呈现时,它将使用英文字体,当它遇到英文字体中不存在的字形(即任何阿拉伯字母)时,它将使用阿拉伯字体

大概是这样的:

body {
  font-family:Palatino,serif;
}

:lang(ar) {
  font-family: "Traditional Arabic",serif;
}
@font-face {
  font-family: 'your_arabic_font';
  src: url('../fonts/arabic_font.ttf');
}

@font-face {
  font-family: 'your_english_font';
  src: url('../fonts/english_font.ttf') format("opentype");
}

p {
  font-family: 'your_english_font', fallback, 'your_arabic_font';
}

希望对您有所帮助。

下面的函数将在一个范围内包装不同的语言 使用各自的字体创建.en和.ar css类

function formatString(string) {
    var output = "<span class='en'>";
    var ar_start = parseInt("0x00600", 16);
    var ar_end = parseInt("0x006FF", 16);
    var currentLang = "en";
    for (var i=0; i<string.length; i++){
        if (string.charAt(i) != " "){
            var code = string.charCodeAt(i);
            if (code > ar_start && code < ar_end){
                if (currentLang != "ar"){
                    currentLang = "ar";
                    output += "</span><span class='ar'>"
                }
                }else{
                    if (currentLang != "en"){
                        currentLang = "en";
                        output += "</span><span class='en'>"
                    }
                }
            }
            output += string.charAt(i);
        }
    }

    return (output);
}
函数格式字符串(字符串){
var输出=”;
var ar_start=parseInt(“0x00600”,16);
var ar_end=parseInt(“0x006FF”,16);
var currentLang=“en”;
对于(变量i=0;i应收账款开始和代码<应收账款结束){
如果(currentLang!=“ar”){
currentLang=“ar”;
输出+=“”
}
}否则{
if(currentLang!=“en”){
currentLang=“en”;
输出+=“”
}
}
}
输出+=字符串.charAt(i);
}
}
返回(输出);
}

你应该在你应该添加一个琅琅属性的地方加上一个琅琅属性的地方到处都有一个不同的语言使用的地方,到处都有一个不同的语言使用的地方,你应该在你应该添加一个琅琅琅属性的地方到处都有一个不同的语言使用的地方使用:<代码>布拉h

。然后,您可以使用属性font-family和基于lang属性的选择器创建不同的字体堆栈。编辑:这是WCAG2.0的技术