{"id":"font-glyph-svg","title":"Font to SVG: a line of text drawn as SVG paths from the font's own TrueType outlines","description":"Reads a TrueType-outline font you supply as base64 (up to 2 MB; TTF, WOFF or WOFF2) and returns up to 200 characters of single-line text as an SVG made of <path> outlines (one per distinct glyph, placed with <use>), plus each glyph's path data in font units (y up), for an agent producing a logo, icon label or image that must not depend on the font being installed. Composite glyphs and their transforms are resolved. It does not apply kerning, ligatures or shaping (text with combining marks or complex scripts is unsupported), does not read CFF (.otf with PostScript outlines) or variable-font instances, does not make an SVG font (that format is deprecated), and a font whose OS/2 fsType forbids embedding fails with no SVG.","roi":"Turns text in a given font into resolution-independent vector outlines without a rendering stack.","audience":"business","package":"identifier-text-kit","channels":["x402","mcp"],"endpoint":{"method":"POST","url":"https://agents.writerslogic.com/api/v1/font-glyph-svg","path":"/api/v1/font-glyph-svg","contentType":"application/json"},"price":{"amount":"0.005","currency":"USDC","network":"base","perCall":true,"failedCallsCharged":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["fontBase64","text"],"properties":{"fontBase64":{"type":"string","minLength":8,"maxLength":2796204,"description":"Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB."},"text":{"type":"string","minLength":1,"maxLength":200,"description":"One line; line breaks are not laid out."},"fontSizePx":{"type":"number","minimum":1,"maximum":1000,"description":"Default 100."}}},"resultSchema":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"svg":{"anyOf":[{"type":"string"},{"type":"null"}]},"widthPx":{"anyOf":[{"type":"number"},{"type":"null"}]},"heightPx":{"anyOf":[{"type":"number","description":"ascender minus descender from hhea, scaled."},{"type":"null"}]},"glyphs":{"type":"array","items":{"type":"object","properties":{"codePoint":{"type":"string","description":"The first code point that used this glyph."},"glyphId":{"type":"integer"},"advance":{"type":"integer","description":"hmtx advance in font units."},"path":{"type":"string","description":"SVG path data in font units, y up (flip y to draw)."}}}},"missing":{"type":"array","items":{"type":"object","properties":{"codePoint":{"type":"string"},"offset":{"type":"integer","description":"UTF-16 offset."}}}},"unitsPerEm":{"anyOf":[{"type":"integer"},{"type":"null"}]},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"outputSchema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"svg":{"anyOf":[{"type":"string"},{"type":"null"}]},"widthPx":{"anyOf":[{"type":"number"},{"type":"null"}]},"heightPx":{"anyOf":[{"type":"number","description":"ascender minus descender from hhea, scaled."},{"type":"null"}]},"glyphs":{"type":"array","items":{"type":"object","properties":{"codePoint":{"type":"string","description":"The first code point that used this glyph."},"glyphId":{"type":"integer"},"advance":{"type":"integer","description":"hmtx advance in font units."},"path":{"type":"string","description":"SVG path data in font units, y up (flip y to draw)."}}}},"missing":{"type":"array","items":{"type":"object","properties":{"codePoint":{"type":"string"},"offset":{"type":"integer","description":"UTF-16 offset."}}}},"unitsPerEm":{"anyOf":[{"type":"integer"},{"type":"null"}]},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]},"example":{"fontBase64":"AAEAAAAJAAAAAAAAT1MvMgAAAAAAAACcAAAAYGNtYXAAAAAAAAAA/AAAADxnbHlmAAAAAAAAATgAAACEaGVhZAAAAAAAAAG8AAAANmhoZWEAAAAAAAAB9AAAACRobXR4AAAAAAAAAhgAAAAUbG9jYQAAAAAAAAIsAAAADG1heHAAAAAAAAACOAAAACBuYW1lAAAAAAAAAlgAAAEyAAQCWAGQAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQADAAEAAAAMAAQAMAAAAAgAAAAAAAAAQQBCAOn//wAAAEEAQgDp////wP/A/xsAAQAAAAAAAAAAAAEAZAAAA4QCvAACAAABAQEAZAGQAZAAAAK8/UQAAAAAAQAAAAADIAK8AAQAAAEBAAEAAAAAAAHCAV7+ogAAArwAAP6i/qIAAAEAAAAAAMgAZAACAAABAQEAAABkAGQAAABk/5wAAAD//wBkAAAETAMgACMAAQAAAAAAAwADAMgCvAAAAAEAAAABAAAAAAAAXw889QAAA+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAyD/OABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUB9AAAA+gAAAMgAAABLAAAA+gAAAAAAAAAEAAkADQAQgABAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgBOAAMAAQQJAAEAFAAAAAMAAQQJAAIADgAUAAMAAQQJAAQAJAAiAAMAAQQJAAYAIgBGAAMAAQQJAA0ARgBoAAMAAQQJAA4ANgCuAFMAeQBuAHQAaAAgAFMAYQBuAHMAUgBlAGcAdQBsAGEAcgBTAHkAbgB0AGgAIABTAGEAbgBzACAAUgBlAGcAdQBsAGEAcgBTAHkAbgB0AGgAUwBhAG4AcwAtAFIAZQBnAHUAbABhAHIAUwB5AG4AdABoAGUAdABpAGMAIAB0AGUAcwB0ACAAZgBvAG4AdAAsACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuAGgAdAB0AHAAcwA6AC8ALwBlAHgAYQBtAHAAbABlAC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAAA=","text":"ABé","fontSizePx":50},"openapiOperation":{"operationId":"font_glyph_svg","summary":"Font to SVG: a line of text drawn as SVG paths from the font's own TrueType outlines","description":"Reads a TrueType-outline font you supply as base64 (up to 2 MB; TTF, WOFF or WOFF2) and returns up to 200 characters of single-line text as an SVG made of <path> outlines (one per distinct glyph, placed with <use>), plus each glyph's path data in font units (y up), for an agent producing a logo, icon label or image that must not depend on the font being installed. Composite glyphs and their transforms are resolved. It does not apply kerning, ligatures or shaping (text with combining marks or complex scripts is unsupported), does not read CFF (.otf with PostScript outlines) or variable-font instances, does not make an SVG font (that format is deprecated), and a font whose OS/2 fsType forbids embedding fails with no SVG.\n\nPrice: 0.005 USDC on Base (x402).","x-x402-price-usdc":"0.005","x-x402-amount":"5000","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"x-audience":"business","x-sample-url":"https://agents.writerslogic.com/api/v1/samples/font-glyph-svg","security":[{"x402":[]},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["fontBase64","text"],"properties":{"fontBase64":{"type":"string","minLength":8,"maxLength":2796204,"description":"Base64 of a .ttf, .otf, .woff or .woff2 file (not a .ttc collection), up to 2 MB."},"text":{"type":"string","minLength":1,"maxLength":200,"description":"One line; line breaks are not laid out."},"fontSizePx":{"type":"number","minimum":1,"maximum":1000,"description":"Default 100."}}},"example":{"fontBase64":"AAEAAAAJAAAAAAAAT1MvMgAAAAAAAACcAAAAYGNtYXAAAAAAAAAA/AAAADxnbHlmAAAAAAAAATgAAACEaGVhZAAAAAAAAAG8AAAANmhoZWEAAAAAAAAB9AAAACRobXR4AAAAAAAAAhgAAAAUbG9jYQAAAAAAAAIsAAAADG1heHAAAAAAAAACOAAAACBuYW1lAAAAAAAAAlgAAAEyAAQCWAGQAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQADAAEAAAAMAAQAMAAAAAgAAAAAAAAAQQBCAOn//wAAAEEAQgDp////wP/A/xsAAQAAAAAAAAAAAAEAZAAAA4QCvAACAAABAQEAZAGQAZAAAAK8/UQAAAAAAQAAAAADIAK8AAQAAAEBAAEAAAAAAAHCAV7+ogAAArwAAP6i/qIAAAEAAAAAAMgAZAACAAABAQEAAABkAGQAAABk/5wAAAD//wBkAAAETAMgACMAAQAAAAAAAwADAMgCvAAAAAEAAAABAAAAAAAAXw889QAAA+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAyD/OABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUB9AAAA+gAAAMgAAABLAAAA+gAAAAAAAAAEAAkADQAQgABAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgBOAAMAAQQJAAEAFAAAAAMAAQQJAAIADgAUAAMAAQQJAAQAJAAiAAMAAQQJAAYAIgBGAAMAAQQJAA0ARgBoAAMAAQQJAA4ANgCuAFMAeQBuAHQAaAAgAFMAYQBuAHMAUgBlAGcAdQBsAGEAcgBTAHkAbgB0AGgAIABTAGEAbgBzACAAUgBlAGcAdQBsAGEAcgBTAHkAbgB0AGgAUwBhAG4AcwAtAFIAZQBnAHUAbABhAHIAUwB5AG4AdABoAGUAdABpAGMAIAB0AGUAcwB0ACAAZgBvAG4AdAAsACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuAGgAdAB0AHAAcwA6AC8ALwBlAHgAYQBtAHAAbABlAC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAAA=","text":"ABé","fontSizePx":50}}}},"responses":{"200":{"description":"Paid result with provenance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["pass","fail","unknown","unsupported"],"description":"pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass."},"svg":{"anyOf":[{"type":"string"},{"type":"null"}]},"widthPx":{"anyOf":[{"type":"number"},{"type":"null"}]},"heightPx":{"anyOf":[{"type":"number","description":"ascender minus descender from hhea, scaled."},{"type":"null"}]},"glyphs":{"type":"array","items":{"type":"object","properties":{"codePoint":{"type":"string","description":"The first code point that used this glyph."},"glyphId":{"type":"integer"},"advance":{"type":"integer","description":"hmtx advance in font units."},"path":{"type":"string","description":"SVG path data in font units, y up (flip y to draw)."}}}},"missing":{"type":"array","items":{"type":"object","properties":{"codePoint":{"type":"string"},"offset":{"type":"integer","description":"UTF-16 offset."}}}},"unitsPerEm":{"anyOf":[{"type":"integer"},{"type":"null"}]},"witnesses":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"detail":{"type":"string"},"path":{"type":"string","description":"JSON pointer or dotted path into the input."},"offset":{"type":"integer"},"index":{"type":"integer"},"expected":{"description":"What the rule required."},"actual":{"description":"What the input had."}}}},"versions":{"type":"object","description":"Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile)."},"limits":{"type":"array","items":{"type":"string"}},"deterministic":{"type":"boolean","description":"Always true: pure code, no model."}}},"_provenance":{"type":"object","description":"C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance"}},"required":["data","_provenance"]}}}},"400":{"description":"Invalid request (no payment consumed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Invalid X-API-KEY","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Payment required or invalid","content":{"application/json":{"schema":{"type":"object","description":"x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"code":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}},"extensions":{"type":"object"}}}}}},"502":{"description":"Upstream failure; the payment is released or not settled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}},"links":{"docs":"https://agents.writerslogic.com/docs/font-glyph-svg/","docsJson":"https://agents.writerslogic.com/docs/font-glyph-svg.json","sample":"https://agents.writerslogic.com/api/v1/samples/font-glyph-svg","openapi":"https://agents.writerslogic.com/openapi.json","catalog":"https://agents.writerslogic.com/api/v1/catalog","verifyProvenance":"https://agents.writerslogic.com/api/v1/verify-provenance","index":"https://agents.writerslogic.com/docs/index.json"}}