2013-10-08 17 views
5

SVG'de bir metnin etrafına bir dikdörtgen koymak istiyorum. Metnin yüksekliği benim için bilinir (text öğesinin font-size özniteliği). Fakat genişlik gerçek içeriğe bağlıdır. getBBox() veya getComputedTextLength()'u kullanmanız gerekir. Ancak bu sadece görüntülendikten sonra çalışır.görüntülemeden önce SVG'de metin genişliğini alma

bir başka bir şekilde belirtmek için bir yolu var mı? Örneğin x ve width öznitelikleri diğer değerlere göre tanımlanıyor mu? SVG Spec'ta böyle bir şey bulamadım.

+0

render sonra ölçüm nesi var? –

+0

@RobertLongson Kod karmaşıklığı ve görsel atlama. Tüm belgeyi dinamik olarak oluşturuyorum. Tüm nesneler hazırlanmalı, sonra dokümana eklenmeli ve sonra işlenmelidir. Oluşturulduktan sonra hesaplarken, bitmemiş nesneleri işlemek, sonra da bunları oluşturduktan sonra değiştirmek zorunda kalacağım. Bu görsel zıplamaya yol açacaktır. – radlan

+0

Sorunuzu kodunuzda ekleyin? Belgeye henüz eklenmemiş bir öğenin bbox'ını ve metin uzunluğunu almaya çalışıyor musunuz? –

cevap

0

Metnin bittiği yeri bulmak, muhtemelen, oluşturmanın kendisinin uyguladığı gibi aynı temel kod yolunu gerektirir - yazı tipi ve stili temel alınarak her karakterin genişliğinden geçiyor ... SVG standartlarının tanımlandığından emin değilim. Bu bilgiyi doğrudan gerçek görüntülemeyi yapmadan doğrudan elde etmek için yöntem, bu yöntemlerin başkaları tarafından burada ortaya çıkmasına veya raporlanmasına kadar, yaklaşım gerçek görüntülemeden önce görünmez hale getirilmelidir.

Sen yapabileceği bir gizli katmana (Z endeksi, donukluk ve malzeme) veya deney içinde hangisi uygunsa görünür viewport dışında yer. Ardından kullanmak sadece tarayıcı öğrenmek için işleme yapmak almak gerekir, bu yüzden o uğruna görünmez hale getComputedTextLength()

İlgili konular