javascript - 如何仅使用 javascript 设置字体系列 - 无法访问 jquery、html 或 css,只能访问 js

标签 javascript fonts font-face adobe-indesign

我正在使用 DirectSmile 为 EFI 数字店面构建打印产品,DirectSmile 是一种插入 InDesign 和数字店面的可变数据程序。可以使用 JavaScript 在 DirectSmile 中完成变量数据字段的复杂格式化。

我可以添加 javascript 进行格式化,但是没有可以与 js 结合使用的 css 或 html。我只是将 js 片段添加到变量数据字段,保存并导出文件,然后上传到 Digital Storefront。

javascript > 可变数据字段 > Directsmile 文档 > 压缩产品 > 数字店面

现在我正在制作名片。它显示的电话号码如下:

办公室123.456.7890
手机 123.456.7890
传真123.456.7890

其中“Office”、“Cell”和“Fax”一词应采用一种字体(8pt Archer 粗体),而数字应采用另一种字体(8pt Graphik Light)。这需要在 JavaScript 中定义,但我不知道如何定义。我对此很陌生,而且研究还没有成功——我发现的每种方法似乎都需要访问 html/css,而我没有。

这是我过去用来格式化电话号码的 JavaScript,因此前面的标签(“Office”“Cell”“Fax”)仅在客户使用关联的电话号码时才会出现,并格式化电话号码本身:

function numbers(){
    out = ""
    num = VAR.GetS("Office_Phone", "")       if(num.length>0) out += "OFFICE" + phone(num) + "\n";  else out = "" + out;
    num = VAR.GetS("Cell_Phone", "")         if(num.length>0) out += "CELL" + phone(num) + "\n";  else out = "" + out;
    num = VAR.GetS("Fax", "")                if(num.length>0) out += "FAX" + phone(num) + "\n";  else out = "" + out;
    return out;
}

function phone(number){
    tmp = ""; div = ".";
    if( number.length>0 ){
        tmp = number.replace(/\D/g, "");
        var len = tmp.length;
        tmp = tmp.split("");
        tmp.splice(len-7,0, div);
        tmp.splice(len-3,0, div);
        tmp = tmp.join("");
    }
    return tmp;
}

我可以添加/更改什么以使前面的标签(“Office”“Cell”“Fax”)显示为 8pt Archer 粗体,电话号码显示为 8pt Graphik Light?

非常感谢所有帮助。谢谢

最佳答案

注意:此响应仅适用于标准 HTML

它似乎与问题中最初要求的 DirectSmile 无关。对于那些寻求通过普通 Javascript 在纯 HTML 元素上设置 fontFamily 的人来说,响应可能会很有用。否则请忽略。

要在 JavaScript 中设置项目的样式属性:

var el = document.getElementById('theelementid');
el.style.fontFamily = 'Graphik Light';

为此,您需要识别特定的 DOM 元素 ID 来定位您的 javascript。

如果您只有 block 的 ID,则可能需要扩展概念以通过 block 内的标签名称来识别项目。例如,以下代码将使用 id="blockid" 将字体系列样式应用于外部 block 中的每个 span 元素:

var block = document.getElementById('blockid');
var els = block.getElementsByTagName('span');
for(var i in els){
  if(els.hasOwnProperty(i)){
    var el = els[i];
    el.style.fontFamily = 'Graphik Light';
  }
}

关于javascript - 如何仅使用 javascript 设置字体系列 - 无法访问 jquery、html 或 css,只能访问 js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853609/

相关文章:

javascript - 在 ES6/Typescript 中使用 _(下划线)变量和箭头函数

javascript - 如何防止掉入 div 元素?

css - 如何将 webfont 与 @font-face 一起使用

CSS:仅在 Mac 上使用字体

javascript - Flex Slider Teaser 拇指图像 slider

javascript - Immutable.js 拆分 Map 类型的键

css - 使用 %? 时字体大小不受影响

css - 嵌入字体的@font-face 不起作用

c++ - SFML "failed to create the font face"问题

css - 为什么 Google 字体不起作用?