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
67 个月下载量
在 3 个 Crates 中使用 (2 个直接使用)
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