#line #glyph #determine #go #set #generate #renderer-agnostic

无需std line-straddler

确定文本中的线(下划线、删除线等)应该如何渲染

6个版本

0.2.3 2024年1月5日
0.2.2 2023年11月28日
0.2.1 2023年8月5日
0.2.0 2023年7月7日
0.1.0 2023年5月11日

#365 in 文本处理

Download history 15/week @ 2024-03-11 1/week @ 2024-03-18 49/week @ 2024-04-01 1/week @ 2024-04-08 46/week @ 2024-04-15 44/week @ 2024-04-22 5/week @ 2024-05-13 22/week @ 2024-05-20 13/week @ 2024-05-27 25/week @ 2024-06-03 13/week @ 2024-06-10 26/week @ 2024-06-17 17/week @ 2024-06-24

81 monthly downloads
6 个crates中使用(通过 piet-cosmic-text

LGPL-3.0-or-later OR MPL-2.0

16KB
159 lines

line-straddler

确定在加下划线/删除线文本时线应该放在哪里。

当你绘制文本时,你需要确定文本装饰的线应该放在哪里。这个crate提供了一个无渲染器的LineGenerator,为一系列Glyph生成Line结构。

源代码

此仓库的标准代码保存在 Codeberg 上。为了方便,还保留在 GitHub 上。

示例

use line_straddler::{LineGenerator, Line, LineType, Glyph, GlyphStyle, Color};

// Take some glyphs from, e.g, cosmic-text
// For instance, this is two lines of two glyphs.
let style = GlyphStyle {
    bold: false,
    color: Color::rgba(0, 0, 0, 255),
};
let glyphs = [
    Glyph {
        line_y: 0.0,
        font_size: 4.0,
        width: 2.0,
        x: 0.0,
        style,
    },
    Glyph {
        line_y: 0.0,
        font_size: 4.0,
        width: 2.0,
        x: 3.0,
        style,
    },
    Glyph {
        line_y: 5.0,
        font_size: 4.0,
        width: 2.0,
        x: 0.0,
        style,
    },
    Glyph {
        line_y: 5.0,
        font_size: 4.0,
        width: 2.0,
        x: 3.0,
        style,
    },
];

// Create a line generator.
let mut alg = LineGenerator::new(LineType::Underline);

// Generate lines for the glyphs.
let mut lines = Vec::new();
for glyph in glyphs {
    lines.extend(alg.add_glyph(glyph));
}
lines.extend(alg.pop_line());

// Draw all of the lines.
for line in lines {
    let point_1 = (line.start_x, line.y);
    let point_2 = (line.end_x, line.y);
    draw_line(point_1, point_2, line.style);
}

许可证

line-straddler 是自由软件:您可以重新分发它并/或修改它,在以下许可条款下

  • 自由软件基金会发布的GNU Lesser General Public License的版本3,或者(根据您的选择)许可证的任何后续版本。
  • 由Mozilla Foundation发布的Mozilla Public License版本2。

line-straddler 的分发是希望它将是有用的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示保证。有关详细信息,请参阅GNU Lesser General Public License或Mozilla Public License。

您应该已收到GNU Lesser General Public License和Mozilla Public License的副本。如果没有,请参阅 https://www.gnu.org/licenses/

依赖关系

~105KB