对于随机密码生成器,我想选择性地生成包含非空格,非控制字母和字母类字符的随机密码。用户可以将生成的密码以系统的默认unicode编码(例如UTF-8)复制并粘贴到浏览器窗口和浏览器/平台上的文本输入小部件中。
但是,在常见的最新浏览器中,我不知道操作系统Windows,Linux,macOS,Android和iOS在常见用户配置中支持哪些字符。在支持unicode的所有平台上是否支持一些最小的unicode符号列表?
或者这完全取决于用户的配置,即使用哪种系统字体?我是否应该坚持使用ascii和latin1生成器,我已经实现了它?
答案 0 :(得分:1)
确保浏览器可以显示国际文本的唯一方法是使用web fonts。对于应用程序来说,它更简单一些,因为您可以将字体与应用程序捆绑在一起并同时安装它。
在这两种情况下,您都需要检查所选字体的许可,以允许您设想的分发类型。所以不太适合通用密码生成器。
请注意,除非使用非常特定的键盘布局/输入法,否则许多unicode组合将无法输入。因此,您将强制用户复制并粘贴他无法输入的密码。
最后,unicode编码点不一定对应于单个符号。许多编码点组合的符号只能与特定顺序中的特定其他符号一起使用。
你应该首先添加“简单”的unicode块,如基本的希腊语或西里尔字母,dingbat块,箭头和工程符号,避免任何组合,避免连字,变音符号,复杂的亚洲脚本等。
希腊语和西里尔语尤其应该得到大多数没有插件的现代系统的支持。与大多数亚洲脚本相比,它们只需要很少的符号,只有最狂热的准系统会跳过它们。
Dingbat和箭头/工程符号需要特定的字体以确保支持,但这些很容易找到(例如,在symbola中),这种符号不需要复杂的文本引擎文本。避免使用数学符号或仔细筛选它们,其中很多组合fileformat.info会告诉您哪些符号在常用字体中可用。这需要知道哪个字体附带哪个OS,并且要知道字体版本(相同字体的更高版本可能包含更多字形,但很少有系统更新它们附带的字体)。
这应该足以加强你的发电机而不会遇到奇怪的角落情况。