웹 페이지 에 임의의 웹 글꼴 솔 루 션 삽입
css 3 사용 하기 font - face, 상세 참조:http://www.w3cplus.com/content/css3-font-face
프로젝트 2:
텍스트 svg path, html 에서 svg 태그 로 텍스트 그리 기
String fontPath="D:/IdeaProjects/text2svg/fonts/ .TTF";
String text=" ";
try {
ResultData resultData = Text2SvgUtils.toConvert(fontPath, text);
System.out.println(resultData);
} catch (Exception e) {
e.printStackTrace();
}
Font :172
:179ms
ResultData{fontFace=FontFace{fontFamily='HuXiaoBo_KuHei', unitsPerEm=1000, panose='2 1 6 0 3 1 1 1 1 1', ascent=859, descent=-141}, charGlyphList=[CharGlyph{source= , glyphName='uni6211', unicode=' ', horizAdvX=1000, arabicForm='', d='M36 212V319L245 338V432H31V517L63 500H245V558L64 555L35 538V635L491 644Q500 644 511 647T526 664V563L373 560V500H580L567 648H722L704 629L715 500H836L828 633L810 652H945L953 500H970V412Q965 425 955 428T935 432H720L732 286L944 339L967 369V255L740 199L746 124H936L966 141V57H729H727H619L609 166L547 151Q538 146 531 138T519 115V233L601 253L586 432H373V350L513 364L542 399V274L373 260V57H278H277H39V141L70 124H245V249L67 234L36 212Z', missing=false}, CharGlyph{source= , glyphName='uni4EEC', unicode=' ', horizAdvX=1000, arabicForm='', d='M957 55Q952 65 941 69T921 73H680V159L712 142H829V568H571V654L602 637H957V55ZM242 75H113V438H43L136 647L118 666H267L202 512H242V75ZM426 74H298V477L280 496H426V74ZM552 532H414L342 647L309 666H470L552 532Z', missing=false}]}
html 중 svg:
그 속 transform="translate(0, 860) scale(1, -1)" // 860 참조: ResultData 의 ascent
JAVA 코드: 참조 https://github.com/ahdshao/text-to-svg
프로젝트 3:
프로젝트 2 가 실 행 될 때마다 100 + ms 가 필요 합 니 다. 너무 오래 걸 립 니 다.사용 시 문 제 를 해결 하고 텍스트 path 데 이 터 를 Redis (글꼴 아래 의 텍스트 path 는 거의 변 하지 않 고 새로 추 가 됩 니 다) 로 지속 적 으로 조회 서 비 스 를 제공 합 니 다.
실행 효율 10ms 이내, 명중 jvm 0ms 이내
1 、 아파 치 사용 batik 도 구 는 TTF 파일 을 SVG 파일 로 변환 합 니 다.
java - jar batik - ttf2svg. jar C: \ \ Users \ \ zhaodahao \ \ Desktop \ 글꼴 패키지 \ 역 쿨 해 피 체. ttf -l 32 - h 65374 - o C: \ \ Users \ \ zhaodahao \ \ Desktop \ \ test \ 역 쿨 해 피 체. svg
2. SAX 로 SVG 파일 분석
log.info(" svg :" + xmlPath);
// SAX , SAXParser
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
// SAXParser
SAXParser saxParser = saxParserFactory.newSAXParser();
XmlSAXHandler saxHandler = new XmlSAXHandler();
saxParser.parse(new File(xmlPath), saxHandler);
log.info(" " + name + ".svg :" + (System.currentTimeMillis() - start));
log.info("WebIcon :" + saxHandler.getWebIcons().size());
long ss = System.currentTimeMillis();
//
jimClient.del(RedisTypeEnum.FONT_DATA.getCode() + webFontId);
// path
batchAddWebIcon(webFontId, saxHandler.getWebIcons(), 10000);
log.info(" :" + (System.currentTimeMillis() - ss));
WebFont webFont=new WebFont();
webFont.setId(webFontId);
webFont.setDescName(name);
webFont.setFontFace(saxHandler.getFontFace());
//
jimClient.hSet(RedisTypeEnum.FONT_TYPE.getCode(),webFontId+"",gson.toJson(webFont));
return true;
package com.zdh.xml.handler;
import com.zdh.webfont.common.entity.WebIcon;
import com.zdh.webfont.common.util.UnicodeConverter;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* SVG
* Date: 16-10-25
* Time: 10:56
*/
public class XmlSAXHandler extends DefaultHandler {
private List webIcons = new ArrayList();
private Map fontFace=new HashMap();
@Override
public void startDocument() throws SAXException {
System.out.println("---->startDocument() is invoked...");
}
@Override
public void endDocument() throws SAXException {
System.out.println("---->endDocument() is invoked...");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("font-face")){
for (int i=0;i*/
String code = attributes.getValue("unicode");
if (code !=null){
if (code.startsWith("")){ // code = ò
code=code.substring(3,code.length()-1);
}else{
code= UnicodeConverter.charToUnicode(code.charAt(0));
}
WebIcon icon = new WebIcon();
icon.setName(attributes.getValue("glyph-name"));
icon.setUnicode(code);
icon.setPath(attributes.getValue("d"));
webIcons.add(icon);
}
}
}
public List getWebIcons() {
return webIcons;
}
public Map getFontFace() {
return fontFace;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CSS3의 Z-Index는 무엇이며 왜 사용합니까?Z-색인은 HTML 요소를 쌓는 순서 또는 우선 순위를 정의하는 데 사용되는 CSS 속성입니다. z-index 값이 높은 요소는 더 높은 우선순위를 가지며 z-index 값이 작은 요소(-1,-2와 같은 음수 값)는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.