Javascript HTML中多语言段落字体样式的处理
我有一个网页,主要由波斯语内容组成,在一些段落中有一个或几个英语单词。内容是自动生成的,我不能从我的HTML源代码更改它。 我需要检测这些英文单词的位置,并给它们Javascript HTML中多语言段落字体样式的处理,javascript,html,css,fonts,Javascript,Html,Css,Fonts,我有一个网页,主要由波斯语内容组成,在一些段落中有一个或几个英语单词。内容是自动生成的,我不能从我的HTML源代码更改它。 我需要检测这些英文单词的位置,并给它们font size:xx前者的原因是我的英文字体——我没有选择,改变它是不可能的——看起来比我的波斯语字体大,它必须比我分配给每页波斯语字体的字体大小小一些像素。 下面是一个例子: <span class="common">سلام دنیا (helo world)</span> 我无法为“hello wor
font size:xx代码>前者的原因是我的英文字体——我没有选择,改变它是不可能的——看起来比我的波斯语字体大,它必须比我分配给每页波斯语字体的字体大小小一些像素。
下面是一个例子:
<span class="common">سلام دنیا (helo world)</span>
我无法为“hello world”部分指定不同的字体大小
由于页面内容是通过从DB获取数据的脚本代码生成的,因此我无法手动为英语单词提供任何嵌入样式,比如用
标记将其包围。
有没有什么方法可以自动检测英语单词并赋予它们风格——也许可以指定一个类-
我们将非常感谢您的任何帮助。您可以通过搜索英文字符序列来操作DOM
,并使用自己的span
包装这些序列
这不是完整的解决方案,但您可以这样做:
document.queryselectoral(“span”).forEach(函数(el){
el.innerHTML=el.innerText.replace(/[a-z]+/g,'$&');
});代码>
.common{
字号:26px;
字体系列:'Arial';
}
.不寻常{
字体大小:36px;
字号:600;
}
直升机世界(helo world)
上述答案有效。为了进一步使用,我提供了这个想法的角度版本。希望这能对将来的人有所帮助
.directive( 'showData', function ( $compile ) {
return {
scope: true,
link: function ( scope, element, attrs ) {
var el;
var farsi = 0;
attrs.$observe( 'template', function ( tpl )
{
//var tpl = attrs.template;
//if ( angular.isDefined( tpl ) )
{
// compile the provided template against the current scope
//now work on tpl:
function containASCII(str){
var flag_only_ascii = 1;
var flag_contain_ascii = 0;
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)<127){
flag_contain_ascii = 1;
}
else
{
flag_only_ascii = 0;
}
}
if(flag_only_ascii == 1 && flag_contain_ascii == 0)
return 1; //just ascii
if(flag_only_ascii == 0 && flag_contain_ascii ==1)
{
return 2;//combination
}
if(flag_only_ascii == 0 && flag_contain_ascii == 0){
return 0; //just english...
}
if(flag_only_ascii == 1 && flag_contain_ascii == 1){
return 3; //other
}
};
if(scope.TranslationValue == 1)
{
var split_span = tpl.split(" ");
for (i = 0 ; i < split_span.length ; i++)
{
var str_1 = split_span[i];
if(containASCII(str_1) == 3){
//if(str_1.search("<em2 ") == -1)
split_span[i] = "<em2 class='uncommon'>" + str_1 + "</em2>";
}
}
var final_str = split_span.join(" ");
}
else
{
final_str = tpl;
}
final_str = '<span rep-eng-text-font>' + final_str + '</span>';
element.html(final_str);
// add the template content
}
});
}
};
})
指令('showData',函数($compile){
返回{
范围:正确,
链接:函数(范围、元素、属性){
var-el;
var-farsi=0;
属性$observe(‘模板’,功能(tpl)
{
//var tpl=attrs.template;
//如果(角度定义(tpl))
{
//根据当前范围编译提供的模板
//现在,关于第三方物流的工作:
函数包含ASCII(str){
var flag_only_ascii=1;
var标志包含ascii=0;
对于(var i=0;i如何检测英语单词?ASCII或ISO-8859-1中存在的任何字符?@PeterMader根据此链接,每种语言都有一系列字符。
.directive( 'showData', function ( $compile ) {
return {
scope: true,
link: function ( scope, element, attrs ) {
var el;
var farsi = 0;
attrs.$observe( 'template', function ( tpl )
{
//var tpl = attrs.template;
//if ( angular.isDefined( tpl ) )
{
// compile the provided template against the current scope
//now work on tpl:
function containASCII(str){
var flag_only_ascii = 1;
var flag_contain_ascii = 0;
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)<127){
flag_contain_ascii = 1;
}
else
{
flag_only_ascii = 0;
}
}
if(flag_only_ascii == 1 && flag_contain_ascii == 0)
return 1; //just ascii
if(flag_only_ascii == 0 && flag_contain_ascii ==1)
{
return 2;//combination
}
if(flag_only_ascii == 0 && flag_contain_ascii == 0){
return 0; //just english...
}
if(flag_only_ascii == 1 && flag_contain_ascii == 1){
return 3; //other
}
};
if(scope.TranslationValue == 1)
{
var split_span = tpl.split(" ");
for (i = 0 ; i < split_span.length ; i++)
{
var str_1 = split_span[i];
if(containASCII(str_1) == 3){
//if(str_1.search("<em2 ") == -1)
split_span[i] = "<em2 class='uncommon'>" + str_1 + "</em2>";
}
}
var final_str = split_span.join(" ");
}
else
{
final_str = tpl;
}
final_str = '<span rep-eng-text-font>' + final_str + '</span>';
element.html(final_str);
// add the template content
}
});
}
};
})