当前位置: 首页 > 知识库问答 >
问题:

如何要么不提供不会呈现粗体的字体,要么强制它加粗

韩玉石
2023-03-14

我有一个缩放功能,可以调整行/列标签的字体大小,以匹配显示的网格/图像。与悬停单元格对应的行/列标签为粗体,所有其他标签为普通标签。但是,有时,即使相同大小的垂直列标签显示为粗体,悬停的水平行标签也会显示为普通。

我已经做了一些测试,并确定这是发生在某些字体(如Courier)的某些标准字体大小(12、18、24等),而不是其他字体(如Helvetica Neue)。所有字体(包括有问题的字体)的奇数字体大小均按预期粗体显示。即使字体没有显示为粗体,当我调用myfont时。isBold(),则返回true。

我在这里的评估是,对于某些字体,例如我的快递版本,如果字体大小是直接从字体库提供的,因此字体默认为普通字体,则不可用粗体字体版本。对于奇怪的字体大小,或者当字体垂直呈现时,将应用编程粗体样式。

我说的对吗?如果是这样的话,我怎样才能捕捉到这种情况发生或即将发生的时间,而不是将该字体作为可用字体提供,或者强制该字体以问题大小(例如12)呈现为粗体?

下面是一个工作示例:

import java.awt.*; 

public class Test {
    public static void main ( String[] args ) {
        class helloFrame extends Frame {
            public void paint( Graphics g ) {
                final Graphics2D g2d = (Graphics2D) g;
                g2d.setFont(new Font("Courier",Font.BOLD,12));
                System.out.println("Style is [" + (g2d.getFont().isBold() ? "bold" : "not bold") + "].");
                g2d.drawString("Hello", 10, 40 );
                g2d.setFont(new Font("Courier",Font.BOLD,13));
                System.out.println("Style is [" + (g2d.getFont().isBold() ? "bold" : "not bold") + "].");
                g2d.drawString("Hello", 10, 55 );
                g2d.setFont(new Font("Courier",Font.BOLD,17));
                System.out.println("Style is [" + (g2d.getFont().isBold() ? "bold" : "not bold") + "].");
                g2d.drawString("Hello", 10, 70 );
                g2d.setFont(new Font("Courier",Font.BOLD,18));
                System.out.println("Style is [" + (g2d.getFont().isBold() ? "bold" : "not bold") + "].");
                g2d.drawString("Hello", 10, 85 );
                g2d.setFont(new Font("Courier",Font.BOLD,19));
                System.out.println("Style is [" + (g2d.getFont().isBold() ? "bold" : "not bold") + "].");
                g2d.drawString("Hello", 10, 100 );
            }
        }

        helloFrame frm = new helloFrame();
        frm.setSize(150,120);
        frm.setVisible(true);
    }
}

其中打印:

Style is [bold].
Style is [bold].
Style is [bold].
Style is [bold].
Style is [bold].

即使字体大小不为12的粗体,也适用于每次打印

更新:这个问题似乎与操作系统有关。非粗体文本在Mac电脑上很明显,但在Windows上,一切都像它应该显示的那样。

共有1个答案

须彭亮
2023-03-14

尝试添加:

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                     RenderingHints.VALUE_ANTIALIAS_ON);

这将启用抗锯齿,这(至少在我的系统上)将极大地改善字体呈现,并且所有大小都显示为粗体。

 类似资料:
  • 我在用一个工具自动生成CSS,它生成下面的@font-face标签和对应的段落Style 注意,指定的字体已经是Garamond字体的斜体版本,从技术上来说,< code>font-style:italic行是多余的。 然而,这并不奏效(我在FF、Chrome 所以,我有2个问题 > 为什么这不起作用,也就是说,为什么使用会导致它不起作用? 有没有办法通过javascript“覆盖”@font f

  • 问题内容: 我今天发现的一个问题类似于这个未解决的问题;尽管不尽相同,但可能有相同的原因。 我正在使用PNG或PDF 渲染SVG文件。在大多数情况下,我打算使用Gearman在后台渲染它们,但现在,我正在PHP / Apache进程中创建一些缩略图。看来,如果在Apache进程中调用了inkscape(通过PHP ),它将找不到需要呈现的字体。因此,图形元素呈现得很好,但是在PNG输出中未绘制任何

  • 我使用的是来自的fonthttp://fonts.googleapis.com/css?family=Open Sans。由于安全原因,一些客户端使用封闭环境,因此我需要使用从npm安装的本地字体。 我尝试了npm为提供的多个软件包,如,,但使用相同css的字体与以前使用GoogleApis字体呈现的字体不同,尤其是

  • 问题内容: 如何使用CSS选择器加粗句子的第一个单词,就浏览器的可比性而言,这是一种好/坏方法吗? 码: 谢谢 问题答案: CSS中没有伪元素。您必须将第一个单词包装在一个额外的元素中,然后选择该元素。

  • 我正在使用nunitosans字体库,但只有普通字体可以在移动应用程序上使用, 这是我的react-native.config.js文件上的内容, 我已经运行了npx react-native链接,但其他字体粗细不起作用,例如粗体 Android文件结构 移动应用程序上未应用粗体字体系列的屏幕 文本组件 粗体和半粗体字体系列不起作用,只有常规字体系列工作

  • 根据有关font-weight和其他来源的MDN页面,使文本内容“比父元素(在字体的可用权重中)暗一个字体权重”。 我有一个测试页面,“开放无”字体包括从谷歌字体,权重300,400(又名“普通”),600,700(又名“粗体”),和800。手动设置数字字体粗细与预期一样工作,但使用似乎会跳过字体粗细600。 Firefox和Chrome在这一点上是一致的,所以我可能误解了“一步”的含义。 这是一