2010-11-16 32 views
1

我試圖使用imagettftext()和標準的Arial粗體字體來呈現文本在一個框的中心對齊。PHP GD - 不同的文本偏移Mac vs Linux

我正在開發Mac上的代碼,並且文本與盒子中心對齊,就像我期望的那樣。但是,然後我將我的代碼部署到一個合適的Linux服務器,它似乎從文本渲染的起源是不同的,字距不對。

我已經證實我在兩臺機器上的php和php gd的最新版本和最好的版本。

請參見下面的示例圖像:

這是Mac alt text

這是在Linux上會發生什麼 alt text

我的問題有沒有人遇到此,知道一個修復或會發生什麼這個問題的解決方法是不必訴諸於實際上只是在Linux服務器上補償文本幾個像素。還是有什麼我失蹤了,當涉及到使用上述功能呈現文本?編輯:我用imagettfbbox()來獲取我正在渲染的文本的大小以正確居中(我也嘗試過使用imagettftext()獲得邊界框的虛擬渲染,問題似乎是是原始imagettftext()呈現也是奇怪)

編輯2:也許它在freetype實現之間的差異?但我希望它們使用相同的代碼庫

+0

那不是一種解決方法僅僅是檢測並調整相應的偏移? – 2010-11-16 17:57:32

+0

以及我已經嘗試過,但如果你看看在Linux上的圖片,你可以看到數字30實際上更接近線條,然後說數字1,並推動一切,說2像素實際只適用於數字的第一半而不是下半部分 – Tristan 2010-11-16 18:00:29

回答

0

我從來沒有解決過這個問題,因爲在linux服務器上所有的字距都是錯的。所以我去實施我自己的字距解決方案,分別繪製每個字符的位置信息,以獲得字符之間的間距。

如果有誰得到了妥善的解決辦法,如果你在Linux上運行,這將是夢幻般的

0

嘗試利用imagettfbbox的:

http://www.php.net/manual/en/function.imagettfbbox.php

它給你的邊框(有效寬度和高度)一些文本將佔據因此可以判斷哪裏在將文本寫入圖像之前放置文本。

+0

我實際上使用imagettfbbox獲取文本的大小,以便能夠正確居中,但問題似乎是在Linux上,文本偏離了不同的位置 – Tristan 2010-11-16 18:03:04