2011-07-15 25 views
3

我已经创建了一种将SVG格式的文本转换为HTML的算法,算法运行良好,但HTML版本中文本的位置稍微偏移与SVG相比。如何将文本的基线垂直对齐到HTML/CSS中的设置点

我意识到这是由于SVG中的坐标系造成的;它的起源在左下角而不是左上角。因此,我的HTML文本低于应该的位置。这是用于商业软件,我个人宁愿保留文本为SVG,但我不能因为客户端请求,也需要像素完美的副本!

为了修复HTML,我需要对齐文本,以便其基线位于从SVG读取的位置。我试图用垂直对齐方式做到这一点,但没有成功。

问题是没有找到这里的坐标,我已经知道文本的基线应该在哪里。

有谁知道如何将某些文本的基线与HTML中的设置点对齐吗?或者是否有人知道是否可以使用基线而不是左上角的文字。

谢谢

回答

0

CSS无法更改基线的位置。它是基于字体的地方。

我很想 通过试做这个错误,但是这需要任何SVG文件, 可能使用任何字体,在任何规模的工作。因此,每次保证金都会有所不同 。

这排除了任何形式的“黑客”,使它看起来正确的..

看看所有的可能值vertical-align

如果没有这些帮助,我不知道该怎么建议。

+0

干杯,这是我所期望的情况。我不是一位网络开发人员,但我不得不做一些涉及HTML的事情。它总是令我惊讶,它有多笨重。 –

0

行高应该适合你。但说实话,你需要充分利用一些东西,比如填充,保证金来让它恰到好处。

+0

我正在努力看到如何?我需要将文本的基线设置为设定点。我希望通过试用一个错误来做到这一点,但是这需要适用于任何尺寸的任何字体的任何SVG文件。因此每次保证金都会有所不同。 –

+1

无法通过编程实现像素完美。一旦你减去了行高,你需要看看它有多少像素被关闭并且被这个量所补偿。每种字体都会有所不同,即使相同的字体在不同的系统和版本中也会有所不同。 – hooleyhoop

+0

只是要详细说明 - “有多少像素关闭”是从字体高度底部到该字体基线的距离。没有办法以编程方式从浏览器获取此值,并且每种字体都不相同。 – hooleyhoop

0

你应该能够使用div底部和左侧(或任何你有每行文本设置为)CSS属性(并确保它的位置设置为绝对)来定义位置。

+0

问题不在于放置DIV,它将文本的基线对齐到特定的点。 –

+0

那么最好的你将能够做的是确保没有填充,没有余量,设置线高度等,并放置该div,因为没有办法获得100%的图片完美的文字本身。 – JaCraig