Bir web sayfasında işlenen bir dize (piksel) uzunluğunu belirlemek nasıl?

4 Cevap php

Ben yazı tipi boyutunu (12) ve font ailesini (Calibri) biliyorsanız, bu işlenecek sonra verilen bir dize alacak (piksel olarak) uzunluğunu belirlemek için bir yolu var mı? Ben yazı tipi ve boyutu hakkında kesinlikle eminim. PHP kodu kendisi uzunluğunu belirlemek için bu amaç için herhangi bir arama tabloları var mı? Ben dinamik veri DB çıkardı dolu çeşitli kutuları içeren bir SVG görüntü oluşturmak için bir PHP komut dosyası yazıyorum. Sorun elle etrafında metin sarın ve dize büyük ise kutunun boyutunu artırmak için ihtiyaç olmasıdır.

Teşekkürler

4 Cevap

Verilen dize için sınırlayıcı kutunun boyutunu almak için imagettfbbox PHP işlevini kullanın.

Öte yandan can javascript to manipulate SVG images durumda istemci tarafında ele istiyorum da kullanabilirsiniz. Istemci belirtilen yazı tipini veya vardı, bu şekilde bile önemli değildir ...

Sen PHP GD bir görüntü olarak dize dışarı vermek ve elde edilen görüntünün boyutunu almak için kullanabilirsiniz.

Bu kullanırsanız, bu çalışması gerekir:

   list($left,, $right) = imageftbbox( 12, 0, arial.ttf, "Hello World");

   $width = $right - $left;

Sizin başlık ve gerçek sonrası biraz farklı şeyler söylemek gibi görünüyor. Ben gerçekten ne soruyorsun bir web sayfasında işlenen metnin piksel olarak genişliğini belirlemek mümkün olup olmadığını tahmin ediyorum in your PHP code (önceki web sayfasına işlenir).

Eğer öyleyse, cevap "HAYIR" dır. Yazı tipi, kullanıcının bilgisayarında geçerli olmayabilir dedi; s / o özel stil uygulanmış olabilir; Büyük yazı tipi boyutlarını kullanın; vs ..

Eğer can javascript after sayfası oluşturulur kullanarak o genişliğini tespit edilir ne (tabii ki, siz de diğer bazı Sayfası bunu ve hiçbir şey o kadar değişir umut olabilir) ve teslim PHP geri. Bazı hatta aynı sayfada yapabilirsiniz AJAX-ing zekice.

Javascript bunu nasıl hakkında ayrıntılı bilgi için this question bir göz atın.

JQuery kullanmak,

$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");});