【问题标题】:Fonts and their sizes on different machines不同机器上的字体及其大小
【发布时间】:2013-08-27 22:30:59
【问题描述】:

我正在用 java 编写一个 gui PC 程序,我正在使用 Java Swing,问题是,对于给定的字体,具有给定的大小和样式,在给定的字符串上,我计算边界框(以像素为单位)某台机器,有没有可能在另一台机器上,对于完全相同的字体和完全相同的字符串,计算出的边界框会不同?

如果有可能(根据我在程序上得到的结果似乎是这种情况),那么我如何定义一个字体,对于给定的字符串,在每台可能的机器上,它将返回完全相同的边界盒子?

【问题讨论】:

    标签: java swing fonts scalability font-size


    【解决方案1】:

    你不能,因为渲染取决于几个因素:

    1. 字体本身:某些计算机可能没有您请求的字体,或者字体可能具有相同的名称,但内容不同。您可以通过在可部署包中嵌入自定义字体来避免这种情况。
    2. 屏幕分辨率:字体根据 DPI 中的屏幕分辨率进行渲染。在更高密度的屏幕上,字体会更大(以像素为单位),否则它们将无法阅读。例如,与分辨率为 72dpi 的普通屏幕相比,Apple 的视网膜显示器的分辨率接近 400dpi。一个 72px 高的字符串在普通屏幕上占 1 英寸,完全可读,而仅占 0.18 英寸,几乎不可读。
    3. 用户有权自定义其字体的大小。如果我是老花眼,我会想要更大的字体。

    编辑

    或者,您可以通过使用预渲染字符串(保存为光栅图形甚至 SVG 路径)来欺骗系统,但请注意我向您提出的问题。

    【讨论】:

      【解决方案2】:

      这是路口,设置:

      1. 原生操作系统,

        • 可访问的安装字体(Native OS 使用不同的字体、大小、粗体......)

        • theme in Native OS

        • 用于主题的字体(其属性)

        • 各种用户设置、自定义主题

        • 可以在 Native OS 中更改全局属性的白痴自定义应用程序,而不是应用程序设置

      2. 观感

        • L&F使用自己的Font,不一样

        • 默认情况下与 Native OS 相同的选项

        • i**** 可以更改 Native OS 中的全局属性的自定义应用程序.....

      3. 非常不同且太难的工作是根据屏幕比例(以像素为单位)更改字体,

      4. 任何更改都将在 UIManager 中进行迭代并更改 FontUIResources 的每个键

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-05
        • 1970-01-01
        • 2015-02-27
        • 1970-01-01
        • 2016-09-19
        • 2013-04-26
        • 2012-02-21
        相关资源
        最近更新 更多