Skip to main content

shxparser

Pure Python Parser for SHX Hershey font files.

SHX files are an AutoCad format which can encode single line fonts.

This format is used for many CNC and laser operations.


Progress

Things currently parse, text converts to paths. There may be edge cases and bugs within the code.

Encoding

Calling the parser on a SHX file will parse the file. The glyph data is accessed via the ShxFile.glyphs dictionary which stores the particular commands. These positions are stored (or will be) in segments. Each segment is:

  • (x0,y0) -- Move to Position.
  • ((x0,y0), (x1, y1)) --- Straight Line start->end
  • ((x0,y0), (cx, cy), (x1, y1)) --- Arc start->control->end where control is a point on the arc that starts at start and ends at end.

Usage

See test_parser.py for usage:

    def test_parse(self):
        for f in chain(glob("parse/*.SHX"), glob("parse/*.shx")):
            shx = ShxFont(f)
            paths = ShxPath()
            shx.render(paths, "The quick brown fox jumps over the lazy dog", font_size=50)
            draw(paths, 2000, 100, 50, f"{f}.png")

SCRIPTS8 SHX

Format

For some format descriptions and explanations see:

And:

Primarily the format performs regular (octant direction, distance) and 15 speciality operations.

Regular Command

  • Direction, Length pair. If Length is 0 then direction is special command.

Special Commands

  • END_OF_SHAPE - Ends the shape.
  • PEN_DOWN - Puts the pen down into drawing mode.
  • PEN_UP - Puts the pen up into move mode.
  • DIVIDE_VECTOR - Applies a vector 1/scale
  • MULTIPLY_VECTOR - Applies a vector scale
  • PUSH_STACK - Pushes current position to the stack.
  • POP_STACK - Pops current position from the stack.
  • DRAW_SUBSHAPE - References the glyph data of another glyph.
  • XY_DISPLACEMENT - Moves to a long dx, dy position.
  • POLY_XY_DISPLACEMENT - Performs a sequence of long dx, dy position changes. 0,0 terminates.
  • OCTANT_ARC - Performs an octant_arc operation. Performing an arc across some octants.
  • FRACTIONAL_ARC - Performs an octant_arc operation with fractional value offsets.
  • BULGE_ARC - Performs bulge arc operations with dx, dy, and bulge.
  • POLY_BULGE_ARC - Performs a sequence of bulge arc operations. 0,0 terminates.
  • COND_MODE_2 - Performs the next command conditionally, and only if the current mode is vertical.

Metadata

Release files for shxparser 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shxparser 0.0.2
File Size Uploaded
shxparser-0.0.2.tar.gz 12.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shxparser 0.0.2
File Interpreter ABI Platform
shxparser-0.0.2-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 23.5 kB

Release files / shxparser-0.0.2.tar.gz

Download URL shxparser-0.0.2.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8541e4bce62876822c93f3959e7f6909ef1bf8352691b343bacdaaa9b92ff270
BLAKE2b-256 checksum
How to use checksums
1f819cc013c54afaf1bce5ce5f569580d6624e02f9b3f20b41b243556b9247b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.10

Release files / shxparser-0.0.2-py2.py3-none-any.whl

Download URL shxparser-0.0.2-py2.py3-none-any.whl
Size 11.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
ccd37c9d63440f8c961189bf58d4a90db23ec7b31e4c12175267f0f780db7a6c
BLAKE2b-256 checksum
How to use checksums
57fb98c8204a5348566f24ee23127a680a9b5ddd3614ecc5a00a4efe4d5f53e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page