Re: Citizen CX-02 incorrect paper dimensions in PPD
Solomon Peachy via Gimp-print-devel <[email protected]> Sat, 3 Aug 2024 22:34:09 -0400
| Newsgroups | gmane.linux.printing.gimp-print.devel |
|---|---|
| Message-ID | <[email protected]> |
On Sat, Aug 03, 2024 at 10:46:07AM -0400, Michael Sweet wrote:
> There is support for this in PAPPL (in order to minimize inter-job
> delays) so that bodes well for a future Gutenprint printer application
> at least... :)
Absolutely. There are a _lot_ of goodies that are either badly
shoehorned through the existing CUPS frontend, or simply waiting for the
day when I can finally bring them into the light.
> So for higher-level formats (PDF in particular) that isn't a problem.
> For raster printing you'd be forced to transform the color data on the
> back side - not ideal/optimal but doable.
This is another area where having some sort of predefined "profile"
would be handy.
A while back I picked up a couple a of surplus ID card printers with an
eye towards disrupting this (even more proprietary and vendor lockd-in)
space as well. I had some initial success but the sheer cost of these
printers (and no meaningful interest/feedback) kept me from pursuing
this space any further.
***
After I (mostly) broke the propretary SDK-based stranglehold that held
back these bigger dyesub printers from wider usage. Heck, to this day
the only reason most (if not all) of this space has _any_ IPP support at
all is because it came for free on top CUPS+Gutenprint)
> So for the printers I've written drivers for in the past, the overcoat
> option has always been on/off (boolean) with the ribbon determining
> the type (glossy/matte/etc.)
That was true in the earlier days of this space, but pretty much
everything under two decades old supports Glossy or Matte selection with
the same ribbon.
Meanwhile, CX-02 that spawned this thread supports four different
overcoat types -- None, Glossy, Matte, and Fine Matte.
As an added bonus it also supports a so-called "partial [fine] matte"
mode where the user can supply an image that acts as a glossy/matte
mask, allowing for the creation of a psuedo-watermark effect. (From the
printer's perspective, you send this partial/mask over as a second
set of image data...)
> 1. Define new finishing enums/keywords for this.
> 2. Default it based on print quality (best/high == decurl, draft/normal == no-decurl)
....It needs to be generally independent of "quality". (Or at least
this is one area where the user's definition of "quality" may disagree
with the printer's definition.)
> I know there is a strong temptation to put this in drivers, but really
> these are things best left to the Client software to supply you with a
> good image and for the driver/printer to reproduce the image as
> accurately/consistently as possible.
You're preaching to the choir here, but this is another area where
things get a little messy, for two reasons:
1) Vendors typically have differentiated themselves with (eg) "the
Fujifilm look" and this way no matter which of their models was used to
print an image, or how (ie native SDK, OS/driver(itself written using
said SDK), whatever), you'll get consistent-looking output and
not-so-coincidentally locked in to their ecosytem. Especially when
_not_ using a formal color managed flow, which is the norm for
consumer/prosumer spaces.
2) While these printers typically accept 8bpp YMC or RGB raster data,
translating that over to individual heating elements on the thermal
print head is a complex process where any given pixel influences the
others around it in dedicedly non-linear manners. Most of these
printers implement these algorithms in realtime using a dedicated ASIC
or FPGA, but others require this to be pre-computed by the "driver".
These algorithms usually include a mandatory sharpening pass and other
knobs that tie into (1).
The worst offender here is (well, was) Mitsubishi. All but two of the
models they released since 2007 work this way. Sinfonia requires
something similar on both of their current 6" models (albeit with no
user-facing knobs). HiTi is a convoluted mess, with mulitple "color
modes" with corresponding printer data tables _and_ ICC profiles.
> There are rare cases where post processing on the printer/driver side
> is desirable (I do this in LPrint to improve bar code legibility for
> example, and color management is another common one) but the guiding
> principle should be to do only what is necessary to reproduce what
> you've been given accurately.
This is basically (2) above, but yes, I am otherwise in complete
agreement. (FWIW, color management is one of those things that nobody
ever seems to get right..)
> Yes, the device communication layer is a significant bunch of code,
> and it might indeed need to be forked to port it to PAPPL. I hope
> not, though...
A while back I did some significant internal restructuring to make it a
little more easily adaptable, but there's definitely going to be some
headaches when the time comes.
> Not exactly, it is just that when you are used to using the hammer
> yourself it is sometimes hard to think about telling the printer to do
> something that might use a hammer or might use a different tool to
> accomplish the same goal. With IPP you specify print intent, not the
> low-level detailed instructions.
Well, yeah -- from the _client_ side it's pretty sweet, but from the
printer/server side, it's the difference between a writing an
application and having to build/maintain a bespoke container/virtual
machine -- A huge increase in scope.
> This has been the case for other printers as well. And even in the
> IPP era there are custom client applications for managing these
> printers and their jobs. That won't change...
...But they have to be implemented in a fundamentally different manner.
> So from a (sorry) short-sighted perspective IPP provides no benefit.
...Welcome to... the sad reality of most corporate decision making?
> But when you look at costs over decades (and believe me there are
> people that do just that) having a standard protocol for talking to
> your fleet of devices has HUGE benefits.
Sure. Except the folks with the fleets aren't the folks manufacuring
the printers, and thre are some very pererse incentives in play.
As an example of how insanely myopic these folks can be -- I have been
engaged by the US or EU branches of printer manufacturers to effectively
reverse engineer or deubug issues with their own printers, as their
corporate parents steadfastedly refused to even supply documentation
*internally* to meet high-profile customer needs. (Usually a variation
of "we need a solution that can run on a cheap Arm SBC instead of an
expensive Windows PC")
A project manager at one of these manufacturers later told me that I had
very nearly been sued -- and he'd only prevented that by making it it
very loudly known out that this very same company was about to launch a
new product built on top of what I'd written (ie dysub backend). This
turned into a productive (but rocky) multi-year engagement that finally
ended when their legal team actually did threaten me, this time over a
feature that had saved them something like half a million dollars.
So... Yeah. "Short sighted" doesn't begin to describe it.
That final legal nastygram was four years ago, was also the last
interaction I've had with any printer manufacturer or medium/large scale
priting solution provider. And honestly, good riddance.
However. While the manufacturers (and these solution providers) don't
care, end-users (including myself) that just want to print their photos
certainly do care. After all, I only ever started in this space because
the manufacturers weren't meeting my needs. And that, along with my
unhealthy obsession in low-level tinkering, tinker with low-level stuff,
is why I'm still doing this.
> Initial time to print *might* be impacted slightly but once you start
> pushing jobs IPP and network interfaces are faster than the print
> engine(s).
...If there are sufficient resources to buffer multiple jobs.
Hilariously the printers are nearly always capable of that, but the
driver stacks on top... not so much.
> Being able to monitor what is happening in a heterogeneous environment
> helps to keep things running smoothly and avoids dependance on a
> single vendor/supply chain.
To end-users, that's a huge benefit. To middleware folks... it _could_
be. To printer makers, making it easy to switch to a competitor
is empatically a *bad* thing.
> The core IPP protocol is unchanged from the version published by the
> IETF in 1998.
By "IPP" I mean "IPP Everywhere" aka "driverless printing". That didn't
land until what, 2010, and took another decade to become truly
widespread?
> Um, IPP *is* inherently superior to port 9100 and LPD. Not only do
> you get encryption and authentication support, you also get status
> information, job management, etc. that are all MISSING from port 9100
> and LPD (as implemented by printers). "Print and pray" is how port
> 9100 and LPD are viewed...
I'm not comparing IPP to LPD here; if you don't have a network
interface, _neither_ is an option.
...but you're once again talking about general purpose *end user*
benefit, not benefit to the manufacturers themselves. Or even to their
primary volume customers, who already have their own
vertically-integrated printing solutions (eg drugstore photo printing
kioks) that for all I know are already built around IPP.
And from that perspective, the dyesub makers' attitude of "our volume
customers don't care (and if anything, want us to be _cheaper_) and for
the little one-off guys that do, just sell a cheesy little add-on print
server that provides those services" has been GoodEnough(tm) so far.
...If they want or need more than that, they've certainly never
communicated that with me, much less expressed any interest in helping
to make it happen. Suffice it to say, I'm not holding my breath.
- Solomon
--
Solomon Peachy pizza at shaftnet dot org (email&xmpp)
@pizza:shaftnet dot org (matrix)
Dowling Park, FL speachy (libera.chat)
_______________________________________________
Gimp-print-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gimp-print-devel
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE3H5Sx9DyiyB5hnENrGLLO/XVulEFAmau6J4ACgkQrGLLO/XV ulFrNw/+JUidPzgcf/H0kGRcQR+4wfwqdbx56pLRlcsXx7k0xuh87T+ArOl8KK1W bdA2NEl9yuwtmn5TOCrGxLC6vPUqbSUOMbUCrAcbv0uckk0LUVlY2GAAaoE5ZKeF DyVPFzDDGEhabVxoTxIZkV9e3CKzK0eH4LRac8RYck7H3BGVaQKUf6ul85sDXmrk uQ5pyCXoX4JTUwkjHhZdX17fYK4yxMRVVzZaB7X0JdQ9J5Ji8tqrbXSslHsve9i9 hF/2ibYQQkmpNMt+pLEubDBFb92YZNEDB9FIu04wsqLjafAZTZdOCbRcmvMbUlJx wJfvFLW4sWt7WfMjYrI8eVkFJ0U5kOog/IR8ER7fOTPrJfKxl7ttGi8VbE3zSbhZ 8ScWzSH8ncfJJ+pqkh8HnRuz73oY9pR1JNSGeIntpzZ4IeKXjR9h33ydrJ+ezX0D E6h5lA5Y5PcsADz7mKQ74eVURA5OsT1FijlZUZl4cLXvYyuHCvt+ZgawnuYp1UxQ 29RhMuzfqx8NBrXWoGDfcYMime2JN9WClQxYrQX8kO39UjsD9qoUPcfXpsWFZ/zm HjD/O0EEd3JN34Z/uv/qJrEEXgS1VeAqbdImlJLLfeT4uN2K+Tc1SvWW+DSvMlPR nRKX02iUAcGyutm6qB0oh/waiTz/OPvp9UUICxSBUZgWytQTUC8= =RGuV -----END PGP SIGNATURE-----