Typography Unit Converter
转换排版单位:pt、px、em、rem、pica等,支持DPI设置。
| 单位 | 转换后的值 |
|---|---|
| px | 16 |
| pt | 12 |
| em | 1 |
| rem | 1 |
| pica | 1 |
| mm | 4.2333 |
| cm | 0.42333 |
| in | 0.16667 |
| ex | 2 |
| ch | 2 |
常见参考值
12pt = 16px @ 96dpi1in = 96px @ 96dpi1pica = 16.0px1rem = 16px1em = 16px72pt = 1in
关于此工具
排版单位是数字和印刷设计的基础,但在点、像素、em、rem、派卡等单位之间进行转换往往既繁琐又容易出错。无论您是需要将印刷规格转换为网页设计的设计师、在不同渲染环境中调整字体大小的开发者,还是在多个平台间管理文档的内容创作者,精确性都至关重要。该转换器通过考虑影响像素到点转换的 DPI 设置,可立即将任何排版单位转换为任何其他单位,消除了猜测工作。
要使用该工具,只需从下拉菜单中选择源单位和目标单位,输入要转换的值,如果您正在处理特定的输出介质,可选择调整 DPI 设置。转换器处理基于父字体大小或根字体大小缩放的相对单位(如 em 和 rem),以及绝对单位(如点和像素)。例如,将 16 像素转换为 rem(假设基数为 16px)会得到 1rem,这对于构建在各种设备上流畅扩展的响应式网页设计非常有用。
常见问题
代码实现
def typography_converter(value: float, from_unit: str, to_unit: str,
dpi: float = 96, base_font_px: float = 16) -> float:
"""Convert between typography units. Returns converted value."""
# Convert to px first
to_px = {
'px': lambda v: v,
'pt': lambda v: v * dpi / 72,
'pc': lambda v: v * dpi / 6,
'em': lambda v: v * base_font_px,
'rem': lambda v: v * base_font_px,
'mm': lambda v: v * dpi / 25.4,
'cm': lambda v: v * dpi / 2.54,
'in': lambda v: v * dpi,
'ex': lambda v: v * base_font_px * 0.5,
'ch': lambda v: v * base_font_px * 0.5,
}
from_px = {
'px': lambda v: v,
'pt': lambda v: v * 72 / dpi,
'pc': lambda v: v * 6 / dpi,
'em': lambda v: v / base_font_px,
'rem': lambda v: v / base_font_px,
'mm': lambda v: v * 25.4 / dpi,
'cm': lambda v: v * 2.54 / dpi,
'in': lambda v: v / dpi,
'ex': lambda v: v / (base_font_px * 0.5),
'ch': lambda v: v / (base_font_px * 0.5),
}
px = to_px[from_unit](value)
return from_px[to_unit](px)
# Examples
print(f"16px = {typography_converter(16, 'px', 'pt'):.4f}pt at 96dpi")
print(f"1em = {typography_converter(1, 'em', 'px'):.4f}px at base 16px")
print(f"12pt = {typography_converter(12, 'pt', 'px'):.4f}px at 96dpi")
print(f"1in = {typography_converter(1, 'in', 'pt'):.4f}pt")
Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.