2011-04-20 26 views
2

我需要在數據庫中存儲文本片段以及將在瀏覽器屏幕中包裝文本的層的大小(我無法在客戶端構建圖層 - 這是項目的要求)。整段文字必須正確放入方形圖層。用戶將能夠從一小組選項中使用不同的字體大小和字體系列,並在計算時知道選擇。如何測量一段文本在PHP瀏覽器屏幕(服務器時間)中所佔的體積?

現在,我基於理論中的每一個字符大小計算它的字體大小像素高度和字體大小寬度的50%。以50%的價值,我得到了平均案例的最佳近似值,但它仍然不是一個好的解決方案,因爲它會削減文本塊或在最後留下太多空白空間。而且對於更寬的字體類型甚至更糟糕。

關於如何解決這個問題的任何想法?

回答

1

鑑於用戶在瀏覽器中覆蓋字體選擇的容易程度,這最多隻能是「最佳猜測」嘗試,但您可以使用GD繪製文本,然後使用GD爲其計算邊界框imagettfbbox()

但是這隻支持簡單的文本,所以如果你用粗體/斜體,可變尺寸等做「複雜」的東西,那麼你大部分是SOL。

+0

我們實際上有非常「複雜」的文字,所以這種方法對我們沒有什麼用處。但無論如何非常感謝。對於普通文本而言,這是一種很好的方法。 – 2011-05-12 09:09:21

1

給出的要求,要做到這保證100%的唯一的方法是:

渲染服務器上的圖像 - 這可以是一個正常的圖像,以矢量格式如SVG,或甚至(更極端)閃存 - 並且以某種形式在客戶端上使用生成的輸出,從而保證精確呈現任何CSS呈現/本地字體問題都可能與服務器生成的值不同,因此不可靠!

因此,盒子的確切尺寸因當地字體呈現問題而獨立,因爲它們僅取決於服務器「視圖」。

快樂編碼。

+0

對不起,我沒有回答(我有一個交貨日期)。非常感謝!這是最有用的。並且是最終解決方案的重要組成部分。 – 2011-05-12 09:06:44

+0

@羅德里戈Pontremoli很高興的東西了:) – 2011-05-12 10:02:43

相關問題