Copyright question re:reworked fonts
  • [EDIT}  Please disregard this post, it was foolish of me to ask a question of law in this forum.  My apologies.

    I have a commercial, non-free, font that I would like to use on eggbot.  I would like to do a manual tracing/interpretation of the font to make it an engraving font.

    I have no problem deciding that I can use this for my own non-commercial purposes.  But I wonder if anybody has knowledge of how copyright law would apply in the event that I wanted to make the engraving script freely available to the eggbot community??

    A brief web search leads me to a very tentative conclusion that my work would be"transformative" (a term of art) and thus be fair use.  https://en.wikipedia.org/wiki/Derivative_work

    I know this subject is more properly a legal question, but just wonder if anybody has some considered opinions on the subject?
  • Ignoring the question.

    An interesting thing to think about is what would it take to be able to take an outline font, and draw it with a marker, such that it represented the intended outline as well as possible. Perhaps a path-inset type operation, aware of the pen width (a "tool offset") could be designed to do that.
  • I've been pondering this topic a bunch.  My inclination for the moment is to not attempt what is by all accounts the hugely complicated task of automating the process.

    Nonetheless, to try to educate myself about the snags involved, I tried manually converting a few free fonts to vector format.  I have evolved a system that, while far from perfect, is perhaps useful.  It enables me to convert an appropriate font to single-vector style in just a few hours.  The strokes are completely manually performed in Inkscape, then the resulting .svg files are put through the wringer in a Visual Basic 6(!) program I wrote.

    The output of the VB6 program is a line of text defining the font face in hershey vector format as used in a completely stock hershey.py.  The text line can then be copied into a stock hersheydata.py.

    The image below is of three different fonts I've vectorized, along with the stock Sans 1-stroke, and the picture comes from the attached .svg [whoops, I don't see how to attach an svg, so we'll ignore that for the moment.]

    I feel that the manually transcribed vectors yield a perhaps more "supple" text effect than the standard Hershey fonts.  Oh, I should mention that I took the liberty of pushing the Hershey envelope by going to higher precision.  I think it's this higher precision which gives the new text a less "pedantic" feel.  I think the century has come when we can throw off some of the constraints Hershey worked within a half century ago.

    I did _not_, however, change anything in hershey.py - so the new schema is as far as I know completely compatible.

    What do you think - is this method interesting enough to pursue?  Or should I just keep it for my in-house use.

    Oh, rats, I see I can't paste an image here without exceeding the allowed character count.  I guess I'll have to finally open a flickr account or something.
    OK, let's see if I've flickrized it:  http://www.flickr.com/photos/35400824@N03/shares/n1gH7X
  • Yes, it's a good idea. 

    I've often thought about trying to create more fonts in the Hershey format... and there are precedents for creating font derivatives on your own computer (for your personal use).  Having an editor that would let you create new Hershey Fonts would be pretty awesome indeed. :)
  • Well, are there any particular fonts you have been hankering for? I'd be glad to take a hack at it - my results would only be mediocre-to-fairly good, but I'd be happy for the practice.  Up to a small handful of fonts?  (There are plenty of free-to-use-for-any-purposes out there.)

    On the editor idea...If you felt strongly enough about it to create a github issue, I would be glad to at least consider undertaking creation of an Inkscape extension to accomplish this.  Nothing fancy, and probably a bit complicated to use, but maybe with the kind of back-and-forth we did on the hatch extension we could get it done.
  • I can't make my image show up inline.  I click the "Insert Image" icon, and fill in the URL - I've tried flickr and imgur, and all I get inline is an icon for no image.  I must be doing something really stupid, but I don't know what it is!!??

    image
  • After some digging.... Looks like the img tag works OK, if the URL is the actual image.
    http://i.imgur.com/7wmraYb.png, not http://i.imgur.com/7wmraYb


    image
  • Oh, silly me!  I shoulda been able to figure that out.  Thanks much for the digging!!  8^)
  • I added two more fonts since earlier post.

    image
  • These look really great! If we start with fonts that are covered under the SIL Open Font License -- Architect's Daughter, Sacramento, and Allura are -- then it should be acceptable to create and publish derivative fonts of those, so long as we comply with the license terms. One asterisk is that the font designer can require that the name of derivatives is changed... and it may be kinder to do so whether or not it is required.
  • Glad you like them!  8^)

    1.  Perhaps we could acknowledge the designer while making it clear that the designer is not responsible for this incarnation, by doing something like:  prepending "Like " or "Derived from " or "Not " or "Based on " or "Eggbot-", rather than simply making up descriptive names???

    1a. For what it's worth, at http://www.dafont.com/jenna-sue.font the author is quoted as:
    Note of the author
    A casual handwritten font, handmade with care by yours truly. Includes numbers and punctuation.


    Free for personal AND commercial use. That's right, FREE. 100% Free, no need to ask permission!
    And the license.txt file that accompanied the download said:
    Free for personal or commercial use. That's right, FREE. 100% Free, for any project. No need to ask permission... just use it! Enjoy :)
    xoxo
    Jenna Sue
    2.  I'll review and touch-up if necessary the three fonts you have mentioned.  What would you like me to submit to you - just the text lines to be inserted into hersheydata.py and hershey.inx, or new hersheydata.py and hershey.inx?
    And where should they be sent?  service@evilmadscientist.com, or someplace else?  Or maybe you want to open an issue at github and I'll send them there?

    3. Would you also like the .svg files I generated where I hand-traced each glyph, and which are the input files to the Visual Basic 6 svg-to-hershey program?

    4. I would be glad to give you the VB6 program, but it is very very creaky and windows only.  Would you like me to rewrite the VB6 program in python?  It would be a good python learning experience for me.

    5. If you wish me to give the same treatment to additional fonts, please let me know, I'd be happy to - this is kinda fun!  8^)

  • Added another cuppla fonts - am running out of styles...could use some suggestions.  or not.

    image
  • These attribution type questions -- especially the names -- are a little tricky.  With the Jenna Sue example, "free for commercial or personal use" does not necessarily include derivatives, whereas the OFL fonts do explicitly allow derivatives. However, they also allow the license to require a name change (etc.). That kind of information *should* be packaged with the font somewhere-- perhaps in the font file itself... and it would be good to figure that out before publishing any derivatives. (I haven't looked inside the font files themselves.) If there is not any obvious location where that can be found, we're likely in the clear to publish these.



    I particularly do like the Sacramento. Bilbo, too. A fantastic source of these SIL OFL fonts (not sure if this is where you're getting them) is Google Fonts, when you filter by "Handwriting". Clicking through that list, I thought that the following (in addition to the ones that you already created) might be good candidates: Mrs Saint Delafield, League Script, Bad Script, Tangerine, Alex Brush, Parisienne, Delius, Qwigley, and Felipa


    Probably the best way to move forward would be to add these directly to the Hershey text extension... a possible path forward _from there_ would be that we could get this updated into a future version of Inkscape itself. :) (And for that reason, we probably don't want to label any of them as EggBot specific.)


    One other consideration, which you're probably thinking about: When possible, it is best to try and match the locations where cursive-type letters begin and end. I have an experimental optimization that I've been trying out, which skips the pen raise-and-lower if the pen travel distance is zero (really, below a fixed, small threshold). This makes much neater characters when the pen doesn't have to lift between them.


    It's a tricky call what the best way to move forward on that software is-- a Hershey-style font editor is a really neat idea, but I'm not sure that it's best in Inkscape, or elsewhere-- perhaps as a processing sketch that can run within a browser? There are font editing capabilities built into Inkscape now; it might be worth looking at how that process works.

  • I've been fontifying quite a bit, as you can see.  I wish I had been more consistent in a number of my design decisions, but overall I'm pretty pleased.  Not really professional quality, but definitely usable for eggbot I would venture.  Your pointing me to google was a "goodo"  8^) , though I think they do not have all of the SIL OFL faces.

    I have checked the metadata in all the exemplars, and all state that they are licensed with SIL OFL (except Tangerine has nothing in the metadata, though both fontsquirrel and google claim the SIL OFL license applies.  I have an email request in with fontsquirrel requesting the source of their licensing info.)

    Yeah, I see what you mean about the naming problem.  If I had designed one of those fonts, I for sure would not want to see it hacked up by somebody like me without changing the name.

    I find that hershey.py annoyingly has two casts to integer in draw_svg_text.  For use here I've changed the casts to float.  The only difference is that the cast to integer forces character location to integer values, which leaves an ambiguity of up to 1 step in character position.  Once the character is positioned, hershey.py allows my more-precise values for the character shape.  A possible workaround would be for me to do the conversion to hershey at a larger size.  This would presumably cause user to scale it down, so the character position ambiguity would be reduce to less than one step.

    Thus, your experimental skip-pen-up-down ("SPUD"?) would perhaps only marginally work on the integer text.  Dunno, you'd have to try it.  With the two casts changed to float, I get beautiful joinage of joinable cursive characters.  I was not, however, thinking of your SPUD algorithm when I did the fonts, so the beginning and end of cursive characters is not readily identifiable.  This could be fixed by my reworking the fonts if it proves desirable.

    image
  • Once again, these look really great!

    I think that I'd be OK with extending the format to allow floats directly-- seems that there shouldn't be any technical reason why we shouldn't do that.

    Glad you found the SPUD. :)
  • I'm thinking that with all the font choices, user may need some help choosing the "perfect" one.  So...I've suggested a bit of an expansion to the action dropdown in hershey.inx.  Below is an image to illustrate:

    image
  • I like the idea of creating a font table like this, but I would recommend having only a single line in the drop-down menu to select it. Perhaps that should be something like "Generate font table from this text."
  • imageSomething like this?  (I chose the word "sample" rather than "table", because I thought that perhaps to a non-technical person generating a "table" might sound more intimidating than generating a "sample".  No biggy.)

    I hope you had a good time at the Maker Faire!  8^)
  • Yup!  That looks fine (and huge)!
  • In case you would like the new hershey-related files, I have zipped them and put them in dropbox.com  This is my first time using dropbox, so I'm not 100% confident that I've "got the hang of it".  8^)

    Yes, it is huge isn't it (and my own personal copy is "huger", as I've included for my own personal use some additional fonts which are free but not covered under SIL OFL).

    [EDIT: See following post for these files with two more fonts added.]
    https://www.dropbox.com/s/pvui6438o6dlvmu/hersheydata.zip?dl=0

  • Here's the files but with two additional fonts compared with May 26 version:

    [EDIT: Ho hum, added yet another, see next message for the link]
    https://www.dropbox.com/s/x37ayun6e08ec5j/hersheydata 02.zip?dl=0

  • [EDIT: Hopefully the last of these, but see next message]

    https://www.dropbox.com/s/b8l6x9uytysytln/hersheydata 03.zip?dl=0
  • [EDIT: Please stand by - I've found a very odd problem with the Cocoa Bird face, but I'm in the middle of switching to Windows 10, so may be off-the-air for ??? period of time.

    In this latest version I've kept the font shapes all the same, but have regularized, as much as possible, their sizes.  This makes a visual difference when the font samples are being displayed, and thus perhaps makes it slightly easier for user to compare faces.

    This is just the hersheydata.py file, you'll need the previous zip for hershey.py and hershey.inx

    https://www.dropbox.com/s/mqkilhxwzpfchl7/hersheydata 04.zip?dl=0

    Here is the font names crossreference to original names:

    Cocoa Allure            <= Allura                    SIL OFL per metadata
    Cocoa Bird                <= Bilbo                    SIL OFL per metadata
    Cocoa Bird Swash Caps    <= Bilbo Swash Caps            SIL OFL per metadata
    Cocoa Brush                <= Alex Brush                SIL OFL per metadata
    Cocoa Capitol            <= Sacramento                SIL OFL per metadata
    Cocoa Casual Hand        <= Covered By Your Grace    SIL OFL per metadata
    Cocoa Delight            <= Delius                    SIL OFL per metadata
    Cocoa Delight Swash Caps<= Delius Swash Caps        SIL OFL per metadata
    Cocoa Elfin                <= Mountains of Christmas    SIL OFL per metadata, though google cites Apache License, version 2.0
    Cocoa Felix                <= Felipa                    SIL OFL per metadata
    Cocoa Herculean            <= Poiret One                SIL OFL per metadata
    Cocoa Invite            <= Tangerine                metadata silent, but SIL OFL per google and fontsquirrel
    Cocoa League            <= League Script            SIL OFL per metadata
    Cocoa Misty Night        <= Foglihten No03            SIL OFL per metadata
    Cocoa Neato                <= Bad Script                SIL OFL per metadata
    Cocoa Osmotron            <= Orbitron Regular            SIL OFL per metadata
    Cocoa Pepita            <= Pecita                    SIL OFL per metadata
    Cocoa Qwandry            <= Qwigley                    SIL OFL per metadata
    Cocoa Society            <= Mrs Saint Delafield        SIL OFL per metadata
    Cocoa Swiss                <= Italianno                SIL OFL per metadata
    Cocoa Tech                <= Architects Daughter        metadata silent, but SIL OFL per google

  • Whew!  Dodged that bullet after much handwringing.  Dunno when I'll try Win 10 again, if ever.

    Anyway, here's a zip with the Cocoa Bird problem fixed, and - no big surprise - two additional fonts, both licensed under SIL OFL.  Cocoa Little Princess based on Princess Sofia, and Cocoa Pancakes based on Short Stack.

    https://www.dropbox.com/s/quupalfxunjf3cq/hersheydata 05.zip?dl=0

  • Can I ask why "cocoa"? That is also the name of one of the major MacOS frameworks ( https://en.wikipedia.org/wiki/Cocoa_(API) ), and I'm concerned that it could lead to confusion.

    If the name is just because it's evocative of the name Hershey, we might consider a few alternatives, for example cacao, choco, etc. However, I would instead suggest the prefix "HT" -- for Hershey Text. Many font families have similar name conventions, where a 2-3 letter prefix or suffix designates the origin (font foundry), as in "Trebuchet MS" or "URW Venus (see https://www.fonts.com/support/faq/lt-mt-ef-abbreviations and http://blog.extensis.com/fonts/abbreviations-font-names.php ). I think that "MT Bird," "MT Pancakes", and "MT Little Princess" would be compact, easy to read, and clear that they represent a family (or shared origin, at least). Thoughts?
  • Yup, the association with the chocolate manufacturer was the only reason - and now that you have showed me the light, it was surely a poor choice.  I just wanted something to replace the asterisk I had been using.

    The idea of designating the origin in the traditional way is perfect - I was clueless in that regard.  I assume when you used "MT" in your suggestions that was a neural echo of the "HT" you initially suggested - your first link shows "MT" as the Monotype designator.

    [Whoops - note added in proof: "HT" is already in use by Huerta Tipográphica http://www.huertatipografica.com/en#
    I also searched for HM font foundry, HS... (for Hershey Modified, Hershey Style) and got too many hits for comfort.  Even "EB" is in use as a prefix.  What about "EG"?   What do you think? ]  8^)

    So, I take it you would like to use the files?  If so, I'll make the Cocoa => xx changes in the next day or two, and upload them here?
  • Ha!  HT is in use... how about that? Where did you find a list of those?

    (Yes, sorry for the HT -> MT substitution.)

    Some more suggestions:
    SS, for single-stroke
    1S, for single stroke (surely this isn't taken?)


  • I see-- this was a google result. Roger that.  SS is taken, as is HTS.

    HT1?
  • HT1 is fine by me, though perhaps there is less precedent for numerals in the prefix - dunno, and it's not by any means a big deal to me.  If we're going with three characters with the nod to Hershey text, how about HTE for Hershey Text Extended, or Enhanced, or [gasp] Eggbot or [double gasp] Evil?.  (It is extended, after all, because we've gone to a floating point representation from an integer.)

    Additional question: are there any of the font names for which you have alternate suggestions?  As you can guess, the names were completely off-the-cuff creations for which I have no great partisanship.
  • H.T.E. looks OK, although I cannot type it -- it is literally the only thing in my autocorrect dictionary! 

    More suggestions: EMS (for Evil Mad Scientist)
    NH: For New Hershey
    HSS: For Hershey Single Stroke (Also sounds like High Speed Steel, which is good for those of us that use the Hershey Text fonts for engraving things!)

    I don't have any other particular suggestions about names, but I expect that some of those do collide with other known font names.


  • Your web link - Wow, nice resource.

    [ EDIT: Yikes!  I just noticed that my copy of hershey.inx differs from the version in github, in places where I made no changes.  I have no idea where the changes came from, and I'm assuming but not knowing that I started from the hershey.inx that installed with eggbot.  Yipers! ]

    You are ever-so-correct about the name collisions - I've given up - every name in this corner of the galaxy is already in use - and am avoiding the name duplication by considering "EMS " prefix as part of the name.  See files in dropbox:
    https://www.dropbox.com/s/hzogscmg0wlrrw4/hershey EMS 01.zip?dl=0
  • Ah; about those name collisions-- I meant that the new names ("bird," "capitol," "delight") were likely to have collisions, rather than the prefixes. Anyway, let's run with it. I have some new ideas for other enhancements to Hershey Text as well. :)
  • I understood what you meant, and what I meant was that it seems virtually impossible to generate any new names without resorting to a random word generator.  Perhaps I'm overstating the case.  If you think it's important I'll generate some kind of unique names, just give the word.

    Important - see my edit to my previous post, regarding hershey.inx.
  • I've started a new branch at GitHub to track this, with your current version as the starting point: https://github.com/evil-mad/EggBot/tree/HersheyText-expanded

    The differences between your .inx file and the one from GitHub are actually those added by the Inkscape developers when they added it to the codebase.
  • Oooh, will I have to wait a long time to hear about your Hershey Text enhancements???  8^)
  • This may be different enough that it belongs in a separate extension, but I'm thinking about replacing a block of text with stroke-based text.  This becomes much more appealing with the additional fonts that you have added.
  • Whoa!  That would definitely be a neat trick indeed!  8^)
  • I've made some first-round revisions to that branch-- chiefly adding some detailed credits for each of the fonts, re-arranging the list slightly, tweaking the display of the font table, and revising the text and formatting of the extension. Please take a look!
  • Lovely - what a professional job you do!!
  • Thanks! One more round of minor updates pushed, just now.  

    Also, while pondering that new Hershey Text extension, I'm thinking about moving Hershey Text development out of the EggBot repository (https://github.com/evil-mad/EggBot) and into the "plotink" repository (https://github.com/evil-mad/plotink/), which is our generalized set of plotter helper routines. 
  • I've made a few more changes for clarity and better centering, and merged it into the main branch. *Thank you* for all your hard work on this! I suppose that making a font editor is another good topic for the future. :)
  • I've added three more useful (to me, anyway) fonts: EMS Decorous Script, EMS Readability, and EMS Readability Italic.  I've followed your lead in the crediting information.

    The dropbox link is for hersheydata.py and hershey.inx, based on the current github versions.  I've also taken the liberty of adding a version number to each, anticipating that as time goes on other fonts may be added.

    https://www.dropbox.com/s/b0emf1awgmwo0lg/hersheydata v2_0_1.zip?dl=0

    Also, a "heads-up":  I'll soon be sending a revised version of spiral-text which allows for selection from the new variety of fonts.  Name-poem probably wants to be addressed as well.

  • Thanks! These look like great improvements, and I've added them to the repository already.  I'm a fan of Source Sans Pro, so it's especially nice to have that one on the list. :)
  • I noticed that EMS Readability has duplicate data in the capital "E", making it print twice. Do you have any straightforward means of detecting duplicate paths like this? I only happened to notice while doing some plots!
  • Egad!!  No, I don't have any straightforward means of detecting duplicate paths.  I'll have to ponder how it occured, with an eye to seeing if I need to build in a safeguard of some sort.

    Glad you found it, sorry it happened.  8^) At the least, I will manually look for more in the .svg files which define the characters.

    The error is in the .svg file for that face, rather than in the Visual Basic transform-to-Hershey program.  This most likely means it was a human error (mine), and therefore is hopefully not likely to be endemic.

    I've remedied the error, but have to dash out the door this second, so won't get it into dropbox for about another ten hours.
  • I've already corrected it in both the regular and italic versions. No worries; just wondering if you had any clever tricks for spotting these. Food for thought!
  • Must have been rather a pain locating the exact data points to be removed!!
  • After reading Lenore's blog post about the nixie-based font, I went looking for something similar with open font license.  No joy, unfortunately.

    I did, however, find an OFL font that perhaps fills a different vacancy in the growing Hershey fonts constellation.  It looks rather like Courier, though it is said to be influenced by neon tube design (I must confess I don't see any neon influence, however.)  It's at https://fonts.google.com/specimen/Nixie+One

    I've added this derivative as EMS Nixish and EMS Nixish Italic.  And documented both in the now-canonical style.  And here it is in dropbox as version 2.0.2:  https://www.dropbox.com/s/ve4qdcvda2utzbs/hersheydata v2_0_2.zip?dl=0

  • Awesome! I agree that I don't see much neon influence here, but I'm definitely happy to have it added to the set. And, I see that you've got the updated version of Readability in there, too. :)  I'll push it to the repository shortly.