如何获取特定字体的字符串宽度?

时间:2015-10-02 06:39:29

标签: javascript jquery python css django

我正在我的Django应用程序中进行问题/答案测试,并向用户提供所需答案的提示,我希望输入字段与预期答案字符串具有相同的width

目前我正在做的是:

  • 后端,拖着回答:

    width = ''.join(random.sample(answer,len(answer)))
    
  • 前端,当我的ajax请求成功时:

    $('#inputNotDisplayed').text(data.width);
    // put the answer string in a hidden div that has
    // the same css characteristics as my answer receiver input (font-size, font-family...)
    $('#answerInput').width($('#inputNotDisplayed').width()).focus();
    // give its width to the visible input that is meant to received the answer
    // and give the focus to the input
    $('#inputNotDisplayed').remove();  
    

它工作得很好,但它有一个主要缺陷:你可以通过检查收到的数据很容易地得到洗牌的字符串。

我看到的另一个选项是,当Q和A数据存储在数据库中时,我可以计算答案的宽度,以便在询问问题时产生答案,但如果我更改了我想要使用的字体,那该怎么办?它的大小 ?

有没有办法知道特定字体的每个字符大小的宽度,是否可以在后端使用?还有其他想法吗?

另外,我没有使用等宽字体而且我不想;)。

1 个答案:

答案 0 :(得分:1)

如果您不想向用户发送字谜,您可以使用单色字体或至少使用一些字符长度的字体(例如,所有细长字母都具有相同宽度的字体,所有中等字母将具有相同的宽度,所有宽字母将具有相同的宽度)。执行此操作后,您可以使用等效的wiidth字符替换随机字符串中的某些字符。