【问题标题】:What is the argument for Graphics.set_font from the OCaml Graphics package?OCaml Graphics 包中 Graphics.set_font 的参数是什么?
【发布时间】:2020-10-08 02:13:55
【问题描述】:

我正在尝试使用 Ocaml 图形包。我想为我的聊天服务器应用程序创建一个 GUI。我的代码是:

let window = Graphics.open_graph "";
Graphics.set_window_title "caml-chat";
Graphics.set_font "ubuntu";
Graphics.set_text_size 12;
Graphics.draw_string "hello!"

但是,Graphics.set_font "ubuntu" 不起作用。文档说字符串参数取决于系统,但我找不到比这更多的信息。我发现的唯一提及是在this 问题的答案中,但它没有用。

还有人知道关于设置字体的其他信息吗? (或者可以向我指出一个具有更好文档的简单图形库的方向吗?)

【问题讨论】:

    标签: ocaml


    【解决方案1】:

    虽然您没有指定您的系统,但我会假设它是 Linux(我怀疑 Windows 是否有 ubuntu 字体)。

    在 Linux 上,set_font 函数将参数传递给 X Lib 的 XLoadFont 函数。您可以使用fc-listxfontsel 实用程序来查询系统上的可用字体,或直接调用XListFonts 函数。

    例如,

    fc-list | cut -d: -f2 | sort -u
    

    将为您提供字体系列列表,您可以将其传递给set_font 函数。有些行每行会有多个系列,用逗号分隔 (,)。还有更多选项,您可以指定各种样式、尺寸等。但这都超出了范围。您可以通过 fontconfig 指南了解有关字体子系统的更多信息。例如,[这里],在“字体名称”部分,您可以找到字体名称是如何构造的说明。

    【讨论】:

    • 仍然无助于找出函数到底需要什么。 “/usr/share/fonts/truetype/noto/NotoSansNabataean-Regular.ttf”或“Noto Sans Nabataean”或“Noto Sans Nabataean:style=Regular”或...?!
    • 这实际上不在问题的范围内,基本上, set_font 是相应操作系统字体子系统的薄包装。您可以在此处阅读有关 fontconfig 系统的更多信息:freedesktop.org/software/fontconfig/fontconfig-user.html 有关说明和示例列表,请参阅“字体名称”部分。我不是字体专家,我也不明白为什么它如此复杂,所以当我需要这个时,我只需将第二个字段(字段由 : 分隔)作为字体名称,它就可以工作,例如,“Bitstream Vera无单声道”。
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多