#grid #character #rendering #text-rendering #render #low-level #tuig

无 std tuig-iosys

多后端终端式文本网格渲染

5 个版本

0.0.5 2023 年 11 月 10 日
0.0.4 2023 年 10 月 8 日
0.0.3 2023 年 4 月 3 日
0.0.2 2023 年 3 月 27 日
0.0.1 2023 年 3 月 20 日

#396 in GUI

Download history 1/week @ 2024-03-17 26/week @ 2024-03-31 1/week @ 2024-04-07 71/week @ 2024-04-14 1/week @ 2024-04-21 9/week @ 2024-05-26

67 个月下载量
3 个 Crates 中使用 (2 个直接使用)

BSD-3-Clause

140KB
1.5K SLoC

tuig-iosys

tuig-iosys 是由 tuig 使用的文本模式渲染器。如果您只想渲染字符网格,也可以单独使用它。

用法

tuig-iosys 是一个典型的 Rust 包,您可以使用 cargo add tuig-iosys 将其添加到项目中。然后,您可以查阅文档,特别是 docs 模块,以了解如何使用这个库。

请注意,tuig-iosys 是一个相当底层的包。它类似于文本模式的 softbuffer:您可以使用它来渲染 字符 网格,而不是像素网格,并获取基本的事件。这就是它的全部功能。

常见问题解答

(别忘了查看仓库的 README,以获取跨包常见问题解答!)

什么是文本模式?

文本模式、文本 UI 或基于文本的界面是指其输出完全由典型文本字符的网格组成的。例如 nmtui 或 Dwarf Fortress,与 GUI 或网页(可能只包含文本 内容,但可以渲染比

tuig-iosys 画出的线相同的 tuig:它可以在终端中运行吗?

在那种直觉下面有一些隐藏的技术复杂性,但大部分是吻合的。

什么隐藏的技术复杂性?

首先,您实际上可以在传统的“文本模式”系统中做很多事情。例如,自定义字符集可以实现非常复杂的图形,甚至实现像素级的渲染。您不妨在某个时候看看本地的演示场景;他们确实做了很多很酷的事情。tuig-iosys并不试图复制那种效果——从理论上讲,您可以使用其字体支持来实现相同的效果,但您在那里基本上是孤军奋战。(这也包括使用▀/▄或点字。)它最支持的是基于位图的字体用于图块集。

类似地,现代终端实际上……真的很酷。一些终端允许嵌入图像,一些可以像绘制任何像素缓冲区一样绘制,还有一些是神奇的。再次强调,tuig-iosys并不试图复制这些功能。您得到字符网格,您会喜欢的!更严重的是,如果您想要高级终端功能,请使用高级终端库。这不是为了提供访问终端支持的每个功能,而是为了以复古风格渲染内容。

然而,对于库的用户来说,最令人沮丧的复杂性之一是,即使在合理的字符网格中,可用的功能之间也存在很大的差异。无论是tuig-iosys还是tuig,都不会尝试规范化它们,因为没有一种明显正确的“正确方式”来替换后端不支持下划线的情况。相反,它留给库用户去确定使用哪些常见的习惯用法,以及它们应该如何退化。

(提示:尝试创建一个trait MyFormatting: FormattedExt,并使用它来定义“高亮”或“修剪颜色”等事物。)

最后:终端在特殊字符上的行为各不相同。tuig-iosys通常会试图将其标准化为最低的共同分母。例如,如果您写入ASCII BEL,它可能不会按照您预期的行为。

依赖项

~0.8–17MB
~167K SLoC