call-graph-cli 0.1.0

Interactive call and type hierarchy TUI
Documentation
# 显示与终端字体

cgraph 的默认画布不要求 Nerd Font。节点框、连线、箭头和交叉点只使用标准 Unicode 字符,因此只要终端和等宽字体具有常见 box-drawing 字形,就能表达完整图结构。Nerd Font 的优势主要是补充图标和统一个人终端外观;cgraph 不会把私用区图标作为唯一语义。

## 字体建议

如果画布线条有断裂、错位或中英文宽度不一致,优先确认终端确实使用等宽字体,并选择 box-drawing 覆盖完整的字体:

- **Sarasa Mono SC / 更纱黑体 Mono SC**:中英文混排时通常最省心,中文、ASCII 和框线的基线与宽度较一致。
- **JetBrains Mono**:框线清晰,代码辨识度高;需要图标时可选择其 Nerd Font 变体,但 cgraph 本身不依赖这些图标。
- **Iosevka**:字面紧凑、可定制程度高,适合希望在同一终端显示更多节点的用户。
- **Cascadia Mono**:Windows Terminal 环境中的自然选择;如果不需要编程连字,优先选择 Mono 而不是 Code 变体。
- **Fira Code、Hack**:也具有可靠的常用框线覆盖,可以按个人字形偏好选择。

字体是否带“dev”或“Nerd Font”后缀不是关键;更重要的是终端把 `─│╭╮╰╯═║╪╫` 和箭头按单个终端 cell 渲染。若终端启用了字体 fallback,应避免框线的水平段和拐角来自度量差异明显的两套字体。

## 连线图例

| 字符 | 含义 |
| --- | --- |
| ```` | 普通前向边的水平、垂直线段 |
| `╭╮╰╯` | 同一条普通边的正交转弯,不代表相交 |
| `` | 普通边的目标方向 |
| `````╔╗╚╝` | 循环、反向或其他特殊边 |
| `` | 反向/循环边的语义目标 |
| `` | 自环 |
| `` | 两条普通边真正横纵相交 |
| `` | 双线横向、单线纵向的交叉点 |
| `` | 单线横向、双线纵向的交叉点 |
| `` | 双线或复杂混合方向的交汇 |

真实交叉点还会使用加粗洋红样式,颜色只是第二重提示:即使终端关闭颜色,也能依靠 `┼`、`╪`、`╫` 或 `╬` 沿正确轴向继续追踪。普通边是暗灰色,循环、反向和自环为黄色。

## 画布边缘

节点与 viewport 只要还有交集,cgraph 就保留并绘制相交部分,而不是把整个节点隐藏。裁剪发生在完整组件渲染之后,所以终端边缘显示的是真实框线切片,不会把裁剪位置伪装成新的左边框或右边框。可见的节点主体和 toggle 按钮仍可单击或发起拖拽;完全离开 viewport 后,它才从当前帧的命中与空间导航集合中移除。

方框消失不等于关系消失。cgraph 仍按屏外节点的完整世界位置计算连接路径,并保留与 viewport 相交的部分;例如右侧目标刚离屏时,连线会延伸到边界并保留 `▶`。只有整条路由也不经过 viewport 时,本帧才没有可显示的字符。拖动画布后,方框会沿这条关系方向重新进入屏幕。

连线先于节点绘制,节点随后覆盖位于自身内部的端点。这可以保持框体清晰,同时让节点之间、目标箭头以及交叉点继续可见。