小编Pen*_*200的帖子

Oracle JDK 11 和 JDK 12 字体渲染差异

我从 Oracle JDK11 升级到 Oracle JDK 12 和 14,并注意到更高版本(12 和 14)在呈现字体“MS Reference Sans Serif”时似乎有问题。有谁知道为什么以及如何解决?我怀疑它可能与特定字体有关。也许他们在 JDK 12 中放弃了 TrueType、FreeType 或他们使用的任何渲染支持。我没有看到其他字体存在同样的问题。我想我可以简单地更改字体,但我喜欢这种特定的字体,并希望尽可能让它工作。

甲骨文 JDK 11:

在此处输入图片说明

甲骨文 JDK 14:

在此处输入图片说明

代码:

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JavaFontTest extends JPanel {
    public JavaFontTest() {
        setBackground(Color.blue);
    }

    public void paintComponent(Graphics g)  {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.setFont(new Font("MS Reference Sans Serif", Font.BOLD, 12));
        g.drawString("The Quick Brown Fox", 0, 30);
        g.drawString("Jumped over the Well", 0, 60);
    }

    public static …
Run Code Online (Sandbox Code Playgroud)

java fonts

8
推荐指数
0
解决办法
342
查看次数

fwrite阻塞,直到数据写入磁盘?

fwrite()在将要写入磁盘的数据移交给操作系统后,该函数是否返回,或者仅在数据实际物理写入磁盘后才返回?

对于我的情况,我希望这是第一种情况,因为我不想等到所有数据都被物理写入磁盘.我希望另一个操作系统线程在后台传输它.

在这种特殊情况下,我对Windows 10的行为感到好奇.

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fwrite

c++ windows fwrite

2
推荐指数
1
解决办法
341
查看次数

C++ 字符串插入

我有一些文本存储在字符串中。每当我看到特定的字符序列时,我想在模式后面插入一些字符(将字符串中的所有现有字符移动到字符串中较晚/较高的索引)。我认为最有效的方法是保留一个大字符数组(大是因为我不知道到底需要多少插入,但我确实知道添加的字符总数将小于原始字符串的长度),然后迭代原始字符串,将字符复制到新的字符数组中,然后每当识别到字符模式时,插入新字符串,然后继续从源/原始字符串复制字符。有人能想到更快或更好的方法吗?这会经常发生,所以我想尽可能地优化它。

更新:一些人建议使用 std::string 路线而不是字符数组,以避免与字符数组相关的内存管理。

我正在寻找的模式是一个 5 个字符的字符串,然后我一直寻找,直到看到换行符,然后在此时附加 3 或 5 个字符。我会通过做这样的事情来实现它:

bool matchedstart = false;
std::string origstr;
unsigned int strlength = origstr.length();
int strlengthm5 = origstr.length() - 5;
for(int i = 0, j = 0; i < strlength; i++, j++) {       
    if(!matchedstart && i < strlengthm5) {
       if(origstr[i] == 't' && origstr[i+1] == 'n' && origstr[i+2] = 'a'...) {
           matchedstart = true;
       }
     }
    else if(origstr[i] == '\n') {
         //append extra text here
         matchedstart = false;
     }
     outputstr[j] = …
Run Code Online (Sandbox Code Playgroud)

c++ string

1
推荐指数
1
解决办法
1713
查看次数

标签 统计

c++ ×2

fonts ×1

fwrite ×1

java ×1

string ×1

windows ×1